用 Python 處理 Excel 文件

0x00. 前言

最近工作中有個(gè)處理 Excle 數(shù)據(jù)的需求,正好拿 Python 來練練手。簡(jiǎn)單搜了下,發(fā)現(xiàn)一個(gè)好網(wǎng)站:www.python-excel.org(可能需要爬墻頭,請(qǐng)自理~),網(wǎng)站中介紹了幾種開源的 Excel 處理框架,本文選擇了排在第一位的openpyxl

python-excel.org

0x01. 使用

雖然是一個(gè)開源工具,它卻擁有詳細(xì)的文檔參考,打不開也沒關(guān)系,文章末尾會(huì)給出 PDF 格式下載鏈接。下面就來介紹該工具的基本使用。

使用環(huán)境

  • Mac OS X 10.11.2
  • Python 2.7.11

安裝

如果你使用 Mac 或者 Linux 系統(tǒng),那么安裝將特別簡(jiǎn)單:

$ pip install openpyxl 

有同學(xué)會(huì)問,如果沒有 pip 或 windows 系統(tǒng)咋辦啊?簡(jiǎn)單!可以從這里下載源碼安裝。下載并解壓后,進(jìn)入到解壓目錄,執(zhí)行:

$ python setup.py install

使用

安裝完畢后就可以使用了,先簡(jiǎn)單介紹一下,該工具有幾個(gè)主要的類:

  • Workbook: 代表一個(gè) Excel 文件(工作簿)。
  • Worksheet: 代表 Excel 文件中的一個(gè)工作表。
  • Cell: 代表一個(gè)單元格。

好了,知道了這幾個(gè)類的含義后,使用就比較簡(jiǎn)單了:

a) 創(chuàng)建 Excel

from openpyxl import Workbook

# 創(chuàng)建 Excel 對(duì)象
wb = Workbook()

# 保存成文件
wb.save('test.xlsx')

這樣就創(chuàng)建了一個(gè)空的、名為test.xslx的工作簿。

b) 加載一個(gè)已存在的 Excel

from openpyxl import load_workbook

wb = load_workbook('test.xlsx')

這樣就加載了一個(gè)名為test.xlsx的 Excel 文件。

c) 操作工作表

# 獲取 Excel 打開后默認(rèn)的工作表
default_ws = wb.active

# 創(chuàng)建一個(gè)新工作表
new_ws = wb.create_sheet(title='new ws')

# 修改工作表的名稱
new_ws.title = 'modified ws'

# 迭代工作表中所有行
for row in new_ws.iter_rows():
    pass

d) 操作單元格

# 給 “F5” 單元格賦值
new_ws['F5'] = 'test'
new_ws['F5'].value = 'hello'
# 取出 “F5” 單元格的值
print(new_ws['F5'].value)

# 得到單元格對(duì)象
from openpyxl.cell import Cell

c = Cell(new_ws)
f5 = new_ws['F5']

以上就是對(duì) Excel對(duì)象的基本操作了,但在使用中,我們總會(huì)有各種需求,比如:在一些行后添加數(shù)據(jù),我們使用new_ws.iter_rows()返回的是一個(gè) tuple 對(duì)象,這時(shí),我們需要用list()函數(shù)先將其轉(zhuǎn)化為 list 對(duì)象,添加數(shù)據(jù)后再寫入文件:

from openpyxl.cell import Cell

for row in new_ws.iter_rows():
    data = list(row)
    c = Cell(new_ws)
    c.value = 'hello'
    data.append(c)
    
    other_ws.append(data)

0x02. 小結(jié)

openpyxl 的相當(dāng)強(qiáng)大,還支持操作 Excel 中的圖表等高級(jí)功能。由于工作中沒有用到,就沒有去研究,感興趣的同學(xué)可以去看看。

最后分享一點(diǎn)使用 Python 開源工具的小技巧:

由于 Python 中動(dòng)態(tài)語(yǔ)言,有時(shí)候很難判斷一個(gè)方法返回的數(shù)據(jù)類型,我們可以經(jīng)常使用type()方法將返回值的類型打印出來,方法我們對(duì)返回值的使用和處理。

0x03. 附:

openpyxl 參考文檔:http://pan.baidu.com/s/1c1w77sk

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容