最近在寫效能相關的測試指令碼,指令碼已經完成,最終怎麼體現在報告上,要想讓報告看起來漂亮些,我們是先建立一個模板(格式和公式已全部製作好),只需要效能測試完成後往對應的sheet頁中填充資料,資料完成後最終的效能測試報告也就大功告成。雖然可以將模板轉化為xlxwriter的程式碼寫死在生成指令碼中,但是每次都要重新生成一個檔案未免太過麻煩,而且一個格子一個格子地寫入會讓程式碼量飛速上漲。。無奈之下另尋他路,嘗試著用了xlwings這個模組。
為什麼我會選到這個xlwings模組,且還需細細聽我講來:
由於設計目的不同,每個模組通常著重於某一方面功能,各有所長。
xlwings
可結合 VBA 實現對 Excel 程式設計,強大的資料輸入分析能力,同時擁有豐富的介面,結合 pandas/numpy/matplotlib 輕鬆應對 Excel 資料處理工作。同時可以對現有的表格進行修改,對錶格的內容及格式無任何影響。
1 import xlwings as xw 2 workbook = xw.Book("../report/Performance_Test_Report.xlsx") 3 data_range = workbook.sheets(`FPS_detail`).range("A22") 4 data_range.value = [1,2,3] 5 workbook.save()
openpyxl
簡單易用,功能廣泛,單元格格式/圖片/表格/公式/篩選/批註/檔案保護等等功能應有盡有,圖表功能是其一大亮點,缺點是對 VBA 支援的不夠好。不支援對現有檔案進行修改
1 import openpyxl 2 workbook = openpyxl.Workbook("../report/Performance_Test_Report.xlsx") 3 print (workbook.sheetnames) 4 workbook.create_sheet("test") 5 workbook.save("../report/Performance_Test_Report.xls")
pandas
資料處理是 pandas 的立身之本,Excel 作為 pandas 輸入/輸出資料的容器。
win32com
從命名上就可以看出,這是一個處理 windows 應用的擴充套件,Excel 只是該庫能實現的一小部分功能。該庫還支援 office 的眾多操作。需要注意的是,該庫不單獨存在,可通過安裝 pypiwin32 或者 pywin32 獲取。
xlsxwriter
擁有豐富的特性,支援圖片/表格/圖表/篩選/格式/公式等,功能與openpyxl相似,優點是相比 openpyxl 還支援 VBA 檔案匯入,迷你圖等功能,缺點是不能開啟/修改已有檔案,意味著使用 xlsxwriter 需要從零開始。
DataNitro
作為外掛內嵌到 Excel 中,可完全替代 VBA,在 Excel 中使用 python 指令碼。既然被稱為 Excel 中的 python,協同其他 python 庫亦是小事一樁。然而,這是付費外掛…
xlutils
基於 xlrd/xlwt,老牌 python 包,算是該領域的先驅,功能特點中規中矩,比較大的缺點是僅支援 xls 檔案。同時不支援對現有檔案進行修改,只可以copy過來生成一個新表,但copy過來時原表格的格式、公式這些全部被破壞了。
1 from xlutils.copy import copy 2 workbook = xlrd.open_workbook("../report/Performance_Test_Report.xlsx") 3 workbooknew = copy(workbook) 4 ws = workbooknew.get_sheet(0) 5 ws.write(22,1,"changed") 6 workbooknew.save("../report/Performance_Test_Report1.xls")