Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎庫,基于 ECMA-376,ISO/IEC 29500 國際标準。可以使用它來讀取、寫入由 Excel、WPS、OpenOffice 等辦公軟體建立的電子表格文檔。支援 XLAM / XLSM / XLSX / XLTM / XLTX 等多種文檔格式,高度相容帶有樣式、圖檔(表)、透視表、切片器等複雜元件的文檔,并提供流式讀寫支援,用于處理包含大規模資料的工作簿。可應用于各類報表平台、雲計算、邊緣計算等系統。自 2016 年開源以來已成為雲原生應用尤其是 Go 語言開發者在處理電子表格辦公文檔時的熱門選擇,正在被廣泛應用于大型網際網路公司、中小企業客戶和初創公司。入選 2020 Gopher China - Go 領域明星開源項目 (GSP)、2018 年開源中國碼雲最有價值開源項目 GVP (Gitee Most Valuable Project),2022 中國開源創新大賽優秀項目。目前已成為 Go 語言最受歡迎的 Excel 文檔基礎庫。
開源代碼
https://github.com/xuri/excelize
更新摘要
2023年4月10日,社群正式釋出了 2.7.1 版本,該版本包含了累計 30 多項新增功能、錯誤修複和相容性提升優化。此版本中最顯著的變化包括:
相容性提示
- 移除了 ChartLine 資料類型中的 Color 字段
- 使用 RichTextRun 資料類型代替 ShapeParagraph
- 使用 Fill 代替 Shape 資料類型中的 Color 字段
- 移除了已導出的資料類型 AutoFilterListOptions
- 将資料類型 TableOptions 重命名為 Table
- 添加圖表函數 AddChart 改為使用 ChartType 類型枚舉值指定圖表類型
- 修改了 7 個函數的簽名,具體更改詳見官方文檔中的更新說明
新增功能
- 新增函數 SetSheetDimension 與 GetSheetDimension 以支援設定與擷取工作表已用區域,相關 issue #1463
- 建立樣式函數 NewStyle 現已支援 17 種漸變填充樣式
- 增加建立樣式數量上限至 65430
- 通過 AddPicture 添加圖檔時,現已允許插入 BMP 格式圖檔
- 函數 GetPictures 支援讀取被添加至同一單元格中的多張圖檔
- 設定條件格式函數 SetConditionalFormat 支援設定帶有“如果為真則停止”和“圖示集”條件的條件格式規則
- 設定條件格式函數 SetConditionalFormat 支援設定在條件格式中使用帶有純色填充樣式的資料條,并支援指定資料條的顔色,相關 issue #1462
- 添加圖表函數 AddChart 支援設定圖表中各個資料系列使用自定義填充顔色,相關 issue #1474
- 添加圖表函數 AddChart 支援設定氣泡圖圖表中各個系列氣泡的大小
- 添加圖表函數 AddChart 支援設定子母餅圖和複合條餅圖中第二繪圖區域的資料系列
- 添加圖表函數 AddChart 支援為圖表中資料标簽設定自定義數字格式,相關 issue #1499
- 建立表格函數 AddTable 支援在建立表格時指定是否包含标題行
- 建立表格函數 AddTable 建立表格時增加對表格名稱的校驗,并導出了錯誤常量 ErrTableNameLength,相關 issue #1468
- 函數 AutoFilter 支援為篩選範圍内的多個列設定篩選條件
- 計算單元格的值函數 CalcCellValue 現已支援指定是否為公式計算結果應用數字格式
- 計算單元格的值函數 CalcCellValue 對于以下公式函數加入了雙位元組字元的支援:LEFT, LEN, LENB, MID, MIDB, RIGHT 和 RIGHTB,相關 issue #1476
- 計算單元格的值函數 CalcCellValue 函數對于存在錯誤的公式将在計算結果中傳回公式錯誤代碼,并将詳細錯誤資訊在 error 資料類型的傳回值中傳回,相關 issue #1490
- 對輸入圖檔檔案的擴充名調整為大小寫不敏感,相關 issue #1503
- 使用流式寫入器流式按行指派時,對于值為 nil 的單元格将會跳過生成該單元格,相關 issue #756
- 擷取超連結 GetCellHyperLink 函數支援讀取合并單元格中的超連結
- 添加了新的導出類型 ChartType 以表示圖表類型枚舉
相容性提升
- 相容帶有函數組的工作簿
- 相容帶有嚴格模式 XML 命名空間位址的工作簿主題,相關 issue #1447
- 提高了與文檔内部不含工作簿關系部件工作簿的相容性,以修複打開此類工作簿可能出現的 panic
問題修複
- 修複了特定情況下讀取日期時間類型單元格的值存在精度誤差的問題
- 修複了特定情況下當修改原本存儲了日期時間類型的單元格為文本類型值,修改後單元格資料類型有誤的問題,解決 issue #1464
- 修複了部分情況下公式計算結果為空的問題,解決 issue #1469
- 修複了設定資料條類型條件格式時,指定自定義最大/最小值無效的問題,解決 issue #1492
- 修複了打開行高或列寬為 0 的工作表,儲存後行高列寬設定失效的問題,解決 issue #1461
- 提高了讀取帶有空白字元共享字元串表索引值的相容性,解決 issue #1508
性能優化
- 提高了應用帶有自定義月份數字格式的速度,相關 issue #1455
- 大幅提高了對于帶有合并單元格工作表的處理速度,相關 issue #1448
其他
- Go Excelize 提供了支援 WebAssembly/Javascript 環境的 excelize-wasm NPM 包
- Go Modules 依賴子產品更新
- 單元測試與文檔更新
- 優化内部變量與函數命名
- 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言文檔網站更新
緻謝
感謝 Excelize 的所有貢獻者,以下是為此版本送出代碼的貢獻者清單:
- liron-l (Liron Levin)
- nathj07 (Nathan Davies)
- Josh-Weston (Josh Weston)
- jaby
- FlowingSPDG (Shugo Kawamura)
- barismar (Baris Mar Aziz)
- doingNobb (張濤)
- rpoetrap (Rizki Putra)
- huangshaokun
- CHANTXU64 (ChantXu64)
- playGitboy