Excel(Microsoft office)是現(xiàn)在最常用的辦公軟件,主要涉及電子表格制作、數(shù)據(jù)處理、報表輸出展示以及更高端的還有金融建模等;我們知道,在需要批處理多個Excel工作表以及工作簿的時候,需要用到一個自動化的利器:VBA VBA其實是Visual Basic嵌套在office軟件中的一個子集;VBA的功能很強大;但同時由于更新較少也有一些不方便的地方;比如VBA的數(shù)組功能一直被詬病,比如缺少智能提示的編輯器等等;那么有沒有其他的編程語言也可以操作Excel呢? 下面就讓我們來盤點一下: Go語言 :ExcelizeExcelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎庫,基于 ECMA-376,ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Microsoft Excel 2007 及以上版本創(chuàng)建的電子表格文檔。支持 XLSX / XLSM / XLTM 等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復雜組件的文檔,并提供流式讀寫 API,用于處理包含大規(guī)模數(shù)據(jù)的工作簿 Excelize是國人編寫的基于Go語言的Excel庫,中文文檔相對來說更為齊全,同時Go語言是編譯型語言,編譯后只有1個運行文件,可以方便的拷貝到其他電腦使用,同時不用安裝額外的運行時,Go語言還有一個優(yōu)勢就是,速度真的非???/p> 簡單入門安裝
創(chuàng)建Excel文檔
讀取Excel文檔
缺點Go語言本身的錯誤處理真的是太迷了,可以看到每次對象賦值都要聲明 結論Excelize可以說是國內(nèi)最好的第三方Excel操作庫,雖然上手會有一點難度,但是在功能的豐富性和較好的運行性能,還是值得一試的 Excelize中文文檔鏈接 Python :PandasPandas是一個強大的分析結構化數(shù)據(jù)的工具集;它的使用基礎是Numpy(提供高性能的矩陣運算),用于數(shù)據(jù)挖掘和數(shù)據(jù)分析。Pandas中有DataFrame和Series兩個數(shù)據(jù)類型,就好像Excel的工作表和數(shù)據(jù)列(轉(zhuǎn)置后也可以看作:數(shù)據(jù)行),這就和Excel天生契合 簡單入門安裝
讀取Excel文檔
輸出Excel文檔
缺點Pandas在數(shù)據(jù)處理上是非常方便的,但在文檔外操作,如批量修改工作簿名稱,就需要引入 同時,Python作為腳本語言,如果到其他電腦運行,需要額外安裝運行環(huán)境 結論如果純粹的處理大批量數(shù)據(jù)(十萬級以上),pandas自帶各類聚合函數(shù),讓你處理起來得心應手;同時Pandas可以結合matplotlib等第三方繪圖庫,可以方便的可視化數(shù)據(jù) 如果你的數(shù)據(jù)本身可以離開Excel,如數(shù)據(jù)是從數(shù)據(jù)庫導入Excel,那么也可以直接使用Pandas導入數(shù)據(jù)庫數(shù)據(jù),然后在Pandas上進行分析處理;Pandas底層使用numpy,在矩陣運算中具有非常高的性能 Pandas文檔鏈接 Python :Openpyxlopenpyxl是一個用于讀取/寫入Excel2007及以上版本(即xlsx格式)文件的Python庫,不論是Excel內(nèi)的特殊格式,還是單元格處理,都提供了相應的函數(shù),與Excelize近乎相當 簡單入門安裝
創(chuàng)建文檔
讀取文檔
缺點Openpyxl不像pandas那樣,底層使用numpy,所以在運行速度上,其實要比Excelize和pandas要慢(但是還是要比VBA要快一點);同時也是因為Python作為腳本語言,如果要放到其他電腦運行,需要安裝相應的運行環(huán)境 結論相對來說,Openpyxl與VBA的應用場景重合度會更高一點,處理的思路都是比較相近的;Python在語法上,比VBA要豐富和方便的多,如果需要切換,學習曲線會比較平滑 Openpyxl文檔鏈接 Python :Xlwingsxlwings也是Python操作Excel的第三方庫,很大程度上就是補全Pandas的缺點,可以在方便的處理文檔本身,如修改工作表名稱,將Pandas的數(shù)據(jù)處理結果調(diào)用到Excel原來的文件等 簡單入門安裝
創(chuàng)建和讀取Excel文檔
缺點在功能上,如文檔格式化等相較Excelize和Openpyxl來說,還是有不少功能沒有實現(xiàn) 結論xlwings更多的是可以作為xlwings的擴展,學習曲線和Openpyxl也比較相似 xlwings文檔鏈接 其他其他的還有C#的EPPlus/NPOI;Java的POI,easyExcel;JavaScript的exceljs等,也是不錯的Excel操作庫;但學習曲線更為陡峭,應用場景也更為復雜。如果有一天,厭倦了VBA,但是又不想使用Go和Python,也是可以去嘗試一下的 |
|