
工作中經(jīng)常和數(shù)據(jù)打交道,也避免不了使用Excel整理或者匯總一些數(shù)據(jù),業(yè)務(wù)經(jīng)常會(huì)給到一些excel,要求把這些數(shù)據(jù)怎么樣怎么樣,既然學(xué)了Python,就打算寫個(gè)腳本處理這些數(shù)據(jù),于是看了些操作excel的模塊(xlrd&xlwt、XlsxWriter、OpenPyXL、Microsoft Excel API)。這里對(duì)相關(guān)基礎(chǔ)用法做些總結(jié)。
(一)xlrd&xlwt
xlrd用來讀取excel文件,xlwt用來寫excel文件,它們合作來對(duì)excel進(jìn)行操作。
官方文檔:http://www.python-excel.org/
xlrd官方介紹:https://pypi.python.org/pypi/xlrd/1.0.0
xlwt官方介紹:https://pypi.python.org/pypi/xlwt/1.1.2
xlutils官方介紹:https://pypi.python.org/pypi/xlutils
安裝后引用:

xlrd用來讀取excel文件,大致的簡(jiǎn)單操作參考如下:

xlwt用來寫excel文件,大致的簡(jiǎn)單操作如下:

(二)XlsxWriter
Xlsx是python用來構(gòu)造xlsx文件的模塊,可以向excel2007+中寫text,numbers,formulas 公式以及hyperlinks超鏈接。
Xlsx是python用來構(gòu)造xlsx文件的模塊,可以向excel2007+中寫text,numbers,formulas 公式以及hyperlinks超鏈接。
官網(wǎng)Tutorial:http://xlsxwriter.readthedocs.io/tutorial
大致的簡(jiǎn)單操作如下:

同時(shí)在寫入時(shí)可以使用公式,并且可以自定義格式:

(三)OpenPyXL
OpenPyXL是比較綜合的一個(gè)工具,能讀能寫能修改,功能還算可以但也有很大的缺陷。不支持XLS,不支持讀取公式。
由于沒有什么亮點(diǎn)和優(yōu)勢(shì),所以自己沒有親自去嘗試。
OpenPyXL的工作模式跟XlsxWriter和xlwt有很大的區(qū)別,它用的是getter/setter模式。你可以隨時(shí)讀取某個(gè)單元格的內(nèi)容,并根據(jù)其內(nèi)容進(jìn)行相應(yīng)的修改,OpenPyXL會(huì)幫你記住每個(gè)單元格的狀態(tài)。
特別需要注意的一點(diǎn):雖然它支持修改已有文件,但由于其所支持的功能有限,讀入文件時(shí)會(huì)忽略掉它所不支持的內(nèi)容,再寫入時(shí),這些內(nèi)容就丟失了。因此使用時(shí)一定要慎重。比如下面的缺點(diǎn)中提到它無法讀入公式,那如果你修改一個(gè)帶有公式的文件,保存之后,所有的公式就都沒有了。
(四)Microsoft Excel API
大部分Windows環(huán)境的開發(fā)人員都會(huì)選擇Microsoft Excel API。實(shí)際上不僅僅是Python,幾乎各種語言都有相應(yīng)的方法使用它,因?yàn)楹诵牡倪壿嬐耆怯蒑icrosftExcel自身提供的。語言相關(guān)的部分只是負(fù)責(zé)跟Windows的COM組件進(jìn)行通信。
在Python中首先需要安裝Python for Windows extensions(pywin32),具體的文檔可以查閱Win32 Modules和Python COM。
當(dāng)然你還必須要安裝某一個(gè)版本的Microsoft Office Excel,它內(nèi)部的DLL負(fù)責(zé)實(shí)際的操作。
但是有兩個(gè)致命的缺點(diǎn):慢到死和平臺(tái)限制。
因?yàn)橐郧皣L試過,所以也沒有親自實(shí)踐,但MSDN上的文檔絕對(duì)詳細(xì),要處理操作復(fù)雜的Excel的話可以考慮使用。

(五)總結(jié)
在google了一番和嘗試之后,最終決定使用xlrd來讀(既支持XLS,也支持XLSX),用XlsxWriter來寫。目前使用下來還是這個(gè)搭配基本上解決了我操作Excel的需求。