工作中經(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用來(lái)讀取excel文件,xlwt用來(lái)寫excel文件袋倔,它們合作來(lái)對(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用來(lái)讀取excel文件,大致的簡(jiǎn)單操作參考如下:
xlwt用來(lái)寫excel文件宾娜,大致的簡(jiǎn)單操作如下:
(二)XlsxWriter
Xlsx是python用來(lái)構(gòu)造xlsx文件的模塊批狐,可以向excel2007+中寫text,numbers前塔,formulas 公式以及hyperlinks超鏈接嚣艇。
Xlsx是python用來(lái)構(gòu)造xlsx文件的模塊,可以向excel2007+中寫text华弓,numbers食零,formulas 公式以及hyperlinks超鏈接。
官網(wǎng)Tutorial:http://xlsxwriter.readthedocs.io/tutorial
大致的簡(jiǎn)單操作如下:
同時(shí)在寫入時(shí)可以使用公式寂屏,并且可以自定義格式:
(三)OpenPyXL
OpenPyXL是比較綜合的一個(gè)工具贰谣,能讀能寫能修改,功能還算可以但也有很大的缺陷迁霎。不支持XLS吱抚,不支持讀取公式。
由于沒(méi)有什么亮點(diǎn)和優(yōu)勢(shì)欧引,所以自己沒(méi)有親自去嘗試频伤。
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)中提到它無(wú)法讀入公式,那如果你修改一個(gè)帶有公式的文件债查,保存之后非区,所有的公式就都沒(méi)有了。
(四)Microsoft Excel API
大部分Windows環(huán)境的開(kāi)發(fā)人員都會(huì)選擇Microsoft Excel API盹廷。實(shí)際上不僅僅是Python征绸,幾乎各種語(yǔ)言都有相應(yīng)的方法使用它,因?yàn)楹诵牡倪壿嬐耆怯蒑icrosftExcel自身提供的。語(yǔ)言相關(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試過(guò)暮芭,所以也沒(méi)有親自實(shí)踐鹿驼,但MSDN上的文檔絕對(duì)詳細(xì),要處理操作復(fù)雜的Excel的話可以考慮使用辕宏。
(五)總結(jié)
在google了一番和嘗試之后畜晰,最終決定使用xlrd來(lái)讀(既支持XLS,也支持XLSX)瑞筐,用XlsxWriter來(lái)寫凄鼻。目前使用下來(lái)還是這個(gè)搭配基本上解決了我操作Excel的需求。