
Excelize 是 Go 語言撰寫的用于操作 Office Excel 檔案基礎庫,基于 ECMA-376,ISO/IEC 29500 國際標準,可以使用它來讀取、寫入由 Microsoft Excel? 2007 及以上版本創建的電子表格檔案,支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種檔案格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復雜組件的檔案,并提供流式讀寫 API,用于處理包含大規模資料的作業簿,可應用于各類報表平臺、云計算、邊緣計算等系統,入選 2020 Gopher China - Go 領域明星開源專案(GSP)、2018 年開源中國碼云最有價值開源專案 GVP (Gitee Most Valuable Project),目前已成為 Go 語言最受歡迎的 Excel 檔案基礎庫,
開源代碼
GitHub: github.com/xuri/excelize
Gitee: gitee.com/xurime/excelize
中文檔案: xuri.me/excelize/zh-hans
2023年1月9日,社區正式發布了 2.7.0 版本,該版本包含了多項新增功能、錯誤修復和兼容性提升優化,下面是有關該版本更新內容的摘要,完整的更改串列可查看 changelog,
版本說明
此版本中最顯著的變化包括:
兼容性提示
- 升級至該版本需要您使用的 Go 語言為 1.16 或更高版本,以遷移不再支持的標準庫
ioutil - 當給定作業表名稱中存在無效字符時將回傳錯誤,不再自動忽略無效字符
GetCellStyle函式不再回傳合并單元格區域左上角單元格的樣式- 重命名以下 5 個匯出資料型別和錯誤常量,具體更改詳見官方檔案中的更新說明
- 移除了 54 項匯出型別,具體更改詳見官方檔案中的更新說明
- 移除了 2 個匯出常量:
OrientationPortrait和OrientationLandscape - 修改了以下 21 個函式的簽名,使用結構體參考代替此前以 JSON 格式表示的選項引數,具體更改詳見官方檔案中的更新說明
- 引入了 8 項新的函式代替現有函式,具體更改詳見官方檔案中的更新說明
- 在
CellType列舉值中添加CellTypeFormula,CellTypeInlineString,CellTypeSharedString并移除了CellTypeString - 對添加批注
AddComment函式的簽名進行了更改,支持創建富文本批注,相關 issue #1204 - 當 XML 反序列化例外時將回傳錯誤以代替輸出日志,函式
GetComments,GetDefaultFont和SetDefaultFont增加了 error 型別的錯誤回傳值
新增功能
- 新增
GetDataValidations和GetConditionalFormats函式以支持獲取資料驗證設定和條件格式,相關 issue #827 - 新增
ProtectWorkbook和UnprotectWorkbook以提供作業簿保護設定支持 - 新增
SetSheetCol函式以支持按列設定單元格的值,相關 issue #1247 - 新增
GetColStyle函式以支持設定列樣式,相關 issue #1293 - 新增
SetSheetBackgroundFromBytes函式以支持根據給定的圖片資料設定作業表背景圖片,相關 issue #1405 - 新增匯出變數
IndexedColorMapping以支持內建索引顏色轉換 - 新增 20 項匯出型別:
AutoFilterListOptions,AutoFilterOptions,Chart,ChartAxis,ChartDimension,ChartLegend,ChartLine,ChartMarker,ChartPlotArea,ChartSeries,ChartTitle,ConditionalFormatOptions,PaneOptions,Panes,GraphicOptions,Shape,ShapeColor,ShapeLine,ShapeParagraph和TableOptions - 新增 2 項公式函式: AGGREGATE 和 SUBTOTAL
Save、Write和WriteTo函式支持指定保存選項,相關 issue #744- 使用
AddChart函式添加圖表時,支持為折線圖設定是否使用平滑折線,相關 issue #1290 - 使用
AddChart函式添加圖表時,支持設定自定義折線圖線條顏色,相關 issue #1345 - 使用
AddChart函式添加圖表時,支持設定自定義坐標軸字體樣式,相關 issue #320 - 添加圖表函式
AddChart支持創建三維折線圖 - 以下函式新增并發安全支持:
SetColWidth、GetColWidth、SetColVisible、GetColVisible、SetColStyle和GetColStyle - 設定樣式時,當給定的樣式 ID 不存在時將回傳錯誤,相關 issue #1323
- 流式按行賦值時,若行號未遞增將回傳錯誤,以避免生成的作業簿損壞,相關 issue #1139
- 按行流式寫入作業表時,支持通過指定
RowOpts為單元格設定樣式,相關 issue #1354 - 支持流式設定窗格,相關 issue #1047
- 支持流式設定行內富文本單元格
- 支持流式插入分頁符
- 新增 7 項匯出錯誤資訊:
ErrUnprotectWorkbook、ErrUnprotectWorkbookPassword、ErrStreamSetPanes、ErrSheetNameBlank、ErrSheetNameInvalid、ErrSheetNameLength和ErrSheetNameSingleQuote,以便開發者可根據不同的錯誤型別進行采取相應處理 - 新增 5 項匯出資料型別:
HeaderFooterOptions、PageLayoutMarginsOptions、PageLayoutOptions、SheetPropsOptions和ViewOptions - 支持設定分級顯示的明細資料方向
- 支持讀取和設定單元格字體的主題顏色和色調,相關 issue #1369
- 支持讀取帶有符合 ISO 8061 標準的時間型別單元格的值
- 支持設定和讀取帶有內建顏色索引的字體顏色
- 作業簿關閉函式將清理由流式寫入器生成的磁盤快取檔案
- 支持添加或洗掉列時自動調整受影響的列樣式
- 通過
AddPicture添加圖片時,現已允許插入 SVG 格式圖片
兼容性提升
- 流式寫入單元格時將以行內字符型別存盤字符型單元格的值,相關 issue #1377
- 保存作業簿時將跳過作業表中的不帶有樣式和屬性的空白行,以減少生成檔案的體積,相關 issue #1383
問題修復
- 修復部分情況下讀取帶有內建數字格式樣式的浮點數精度有誤問題,解決 issue #1328,#1368 和 #1373
- 修復部分情況下讀取帶有 AM/PM 數字格式樣式的單元格有誤問題,解決 issue #1338
- 修復部分情況下洗掉批注時由于陣列下標越界導致的 panic,解決 issue #1343
- 修復部分情況下讀取單元格的值時出現 panic 的問題,解決 issue #1384 和 #1415
- 修復部分情況下誤將文本決議為浮點型數值的問題,解決 issue #1360
- 修復使用空字符創建作業表后生成的作業簿損壞問題,解決 issue #1361
- 修復向作業表添加圖片后,獲取該圖片內容為空的問題
- 修復部分情況下插入行列后生成的作業簿損壞問題
- 洗掉單元格公式時將洗掉公式計算鏈中的共享單元格參考,以修復部分情況下生成的檔案損壞問題
- 修復部分情況下未對作業表名稱特殊字符及長度做正確處理的問題,解決 issue #1328
- 修復部分情況下公式函式
OR計算結果有誤的問題 - 修復在帶有單一單元格區域參考的作業表中插入行列時,將收到例外的問題
- 修復獲取帶有單一單元格區域參考合并單元格區域時,收到例外的問題
- 修復部分情況下讀取富文本單元格的值不完整問題
- 修復流式寫入時未轉義 XML 字符導致的檔案損壞問題,解決 issue #1391
- 修復公式計算函式 ADDRESS 在作業表名稱為空時計算結果有誤的問題,解決 issue #1396
- 修復部分情況下添加圖片結果有誤的問題,解決 issue #1404
性能優化
- 提高流式合并單元格性能,相較于上一版本,耗時最高降低約 90%,記憶體使用最高減少約 86%
- 優化按行流式寫入作業表
SetRow函式的性能,相較于上一版本,耗時最高降低約 19%
其他
- Go Modules 依賴模塊更新
- 單元測驗與檔案更新
- 優化內部變數與函式命名
- 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言檔案網站更新
致謝
感謝 Excelize 的所有貢獻者,以下是為此版本提交代碼的貢獻者串列:
- cdenicola (Cooper de Nicola)
- chenliu1993
- davidborry
- patsak (Kostya Privezentsev)
- dafengge0913
- Beeb0p (Artem Tarasenko)
- invzhi
- zhangzitao (Zitao)
- jtwatson (Joseph Watson)
- carbin-gun (charles.deng)
- harrison3000 (Harrison)
- strivek (GaoFei)
- gonghaibinx
- martinmr (Martin Martinez Rivera)
- zclark (Zach Clark)
- March0715 (March)
- renxiaotu
- devloppper
- jianxinhou
- nesstord
- Bayzet (Bayzet Tlyupov)
- guoweikuang (郭偉匡)
- qinyuguang (Gin)
- liron-l (Liron Levin)
歡迎加入 Slack 頻道、Telegram 群組 或技術交流群 DingTalk Group ID: 30047129 QQ Group ID: 207895940

出處:https://www.cnblogs.com/xuri
本作品由 Ri Xu 創作,采用知識共享署名-非商業性使用-禁止演繹 2.5 中國大陸許可協議進行許可, 歡迎轉載,但任何轉載必須保留完整文章,在顯要地方顯示署名以及原文鏈接,如您有任何疑問或者授權方面的協商,請 給我留言,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541543.html
標籤:其他
下一篇:Java記憶體區域有哪些構成?
