01
推薦用openpyxl庫處理Excel表
在現(xiàn)代的數(shù)據(jù)驅(qū)動時代,Excel表格成為各行各業(yè)中最常用的數(shù)據(jù)存儲和處理工具之一。然而,對于大量數(shù)據(jù)或需要自動化處理的任務(wù)來說,手動操作Excel顯然是低效而繁瑣的。
小陳老師在工作中就碰到了一個任務(wù)需求:定時檢查郵箱中是否存在對應(yīng)主題的郵件,若存在對應(yīng)主題的郵件,需要將郵件中的附件Excel下載到本地,根據(jù)相應(yīng)的規(guī)則對郵件進行解析,檢查修改填充相應(yīng)的數(shù)據(jù)內(nèi)容,最終將處理完Excel文件返回給發(fā)件人。
本來接到這個需求想通過JAVA進行實現(xiàn),奈何對方電腦上沒有配置Java的環(huán)境變量所以在交付使用的環(huán)節(jié)可能會出現(xiàn)問題,后來決定通過Python/ target=_blank class=infotextkey>Python解決。
通過本例,將教大家如何使用Python來處理Excel文件,并且將其打包成可執(zhí)行文件(EXE),讓您可以在沒有Python環(huán)境的計算機上也能輕松運行您的數(shù)據(jù)處理任務(wù)。
在處理Excel文件的時候推薦大家兩個強大的庫Pandas和openpyxl。它們?yōu)镋xcel數(shù)據(jù)處理帶來了嶄新的解決方案。openpyxl允許我們直接訪問和修改Excel文件的單元格、樣式和圖表等內(nèi)容。相比于其他庫,openpyxl的優(yōu)勢在于它可以完全控制Excel文件的結(jié)構(gòu)和外觀,讓我們能夠?qū)崿F(xiàn)更加細致和定制化的操作。
要使用openpyxl,我們需要先安裝相應(yīng)的模塊:pip install openpyxl。
02
建立Excel文件
下面通過建立和修改Excel文件的實例來了解一下openpyxl的用法。
新建一個Excel文件,向Excel文件中添加三行數(shù)據(jù),分別是姓名、年齡、城市。首先我們導(dǎo)入相關(guān)的函數(shù)Workbook。Workbook相當(dāng)于創(chuàng)建一個wb對象,一個空白的Excel文件,然后獲通過wb.active()獲取到當(dāng)前活動工作表,也就是我們常說的Sheet頁面。
其次可以準(zhǔn)備我們需要的數(shù)據(jù)了,這里我們通過雙重列表的形式展現(xiàn),內(nèi)層嵌套了三條不同的數(shù)據(jù)信息【Name、Age、City】,大家也可以根據(jù)自己的數(shù)據(jù)進行替換,然后通過循環(huán)的方式,讀取雙重列表,將列表的數(shù)據(jù)通過Append方法填充到我們的Excel已經(jīng)激活的Sheet工作表中。添加完成后不要忘記將我們的Excel保存到指定的路徑中。這樣運行Python代碼大家就會發(fā)現(xiàn)我們的Excel文件中已經(jīng)填充了三行數(shù)據(jù),這三行數(shù)據(jù)剛剛是我們代碼中所寫的(圖1)。
03
修改Excel文件
完成新建并填充Excel數(shù)據(jù)內(nèi)容后,接下來看看修改Excel中的數(shù)據(jù)內(nèi)容。我們需要導(dǎo)入相關(guān)的函數(shù)load_workbook,顧名思義也就是打開加載我們的Excel文件,這里打開加載文件需要使用Excel文件的全路徑,否則會出現(xiàn)文件找不到的情況。
然后獲通過wb.active()獲取到當(dāng)前活動工作表,獲取到對應(yīng)的工作表我們便可以對Excel表中的數(shù)據(jù)進行修改了,修改數(shù)據(jù)的方式有兩種一種直接通過橫縱坐標(biāo)的方式修改,比如我想將C2中的New York修改為China,直接通過ws[‘C2’] = 替換的內(nèi)容即可,也可以指定第幾行第幾列的方式來決定(cell表示行和column表示列,value代表替換的內(nèi)容)。替換完成后不要忘記將文件進行保存。再次打開更新后的文件我們會發(fā)現(xiàn)Excel數(shù)據(jù)內(nèi)已經(jīng)完成替換。
使用openpyxl需要注意的一點是目前只支持.xlsx類型的Excel文件,若是.xls類型的文件只能使用xlrd和xlrw兩個模塊(圖2)。
04
打包Python代碼cel文件
最后我們將自己寫完的程序打包成EXE可執(zhí)行文件,那么別人拿到后便可以雙擊直接運行了,首先我們需要安裝一個模塊PyInstaller,安裝完成后我們打開代碼所在的目錄,通過一句簡單的命令即可打包完成,還可以選擇自定義程序圖標(biāo),代碼有兩種格式:
不選擇圖標(biāo):pyinstaller -F -w <文件名>.py
選擇圖標(biāo):pyinstaller -F -i .ico <文件名>.py
當(dāng)看到Building ExE……successfully。時候表示已經(jīng)程序打包完成,在當(dāng)前目錄下的dist文件夾中生成一個名為your_script.exe的可執(zhí)行文件,其中your_script是我們腳本的文件名。這個EXE文件就是我們的Python腳本的可執(zhí)行版本,默認(rèn)圖標(biāo)是一個Python的蛇圖案。
無論是處理大量數(shù)據(jù)還是進行復(fù)雜數(shù)據(jù)操作,Pandas和openpyxl的組合將為您提供強大的數(shù)據(jù)處理能力,讓您的Excel文件處理更上一層樓。當(dāng)然本次文章我們只講述了openpyxl使用方法,并教大家如何將我們編寫的代碼進行打包使用。后續(xù)會分享Pandas更加高效的數(shù)據(jù)處理的內(nèi)容,也期待和大家一起進步一切學(xué)習(xí)。