眾所周知,Excel在工作當(dāng)中的應(yīng)用是很頻繁的,有用在考勤、工資統(tǒng)計方面的;有用在產(chǎn)品明細(xì)、報價單方面的,還有用在項目計劃等方面的…,用的范圍挺廣的。
平時稍微留意一下,就知道Excel文件的后綴有.xls和.xlsx這兩種,而在Python語言當(dāng)中,支持這兩種或其中一種的第3方庫挺多的。
1支持.xls和.xlsx兩種的第3方庫有:xlrd、xlwings、win32com、pandas其中xlrd只支持只讀的操作,而另外的庫可支持讀寫。
為了配合補充xlrd的不足,出現(xiàn)了支持只寫的xlwt庫,還有支持只能修改的xlutils庫,這是腳痛醫(yī)腳頭痛醫(yī)頭的方式,專業(yè)一點的說話,就是打補丁。奇怪的是,盡管打了補丁,卻依然有漏洞,那就是xlwt、xlutils只支持.xls文件的操作。
2其實除了有只支持.xls文件的第3方庫之外,還有只支持.xlsx的第3方庫,那就是openpyxl和xlsxwriter,其中openpyxl支持對.xlsx的讀寫操作,而xlsxwriter只能支持寫的操作。
淘汰了xlrd、xlwt、xlutils的弱弱組合,淘汰了xlsxwriter,也淘汰了openpyxl,這些庫,別的不說,單其兼容性方面,就無法滿足咱們平時開發(fā)的需求。
3或許你會問:既然都滿足不了了需求了,你為什么還講?-可如果我不講,誰知道究竟是怎么回事呢?那剩下的第3方庫:xlwings、win32com、pandas是不是就能完全滿足咱們的需求了,不,pandas雖然可以支持.xls和.xlsx的讀寫操作,卻不支持修改功能。
經(jīng)過一步一步的篩選,最后只剩下:xlwings、win32com了。一開始,見到win32com,以為是只能支持Windows32位上的開發(fā)庫了,可實際上,其在Python對應(yīng)的庫名稱是:pypiwin32。 當(dāng)然,32也不是32位的意思,它可以支持64位的,而且跟xlwings一樣,也是可以跨平臺的。
4除了跨平臺的比較之外,還有性能和文檔(使用說明書)的比較,據(jù)不科學(xué)、不完整的測試,發(fā)現(xiàn)win32com的性能要比xlwings好一些,只是一些,相差并沒那么多,可前者的文檔比后者難懂一些。究竟選擇哪個,看個人喜歡。最后附上一種統(tǒng)計表,好讓你有個全局的判斷的。