Excelize 2.7.0 發佈, 2023 年首個更新

来源:https://www.cnblogs.com/xuri/archive/2023/01/09/excelize_v2_7_0.html
-Advertisement-
Play Games

Excelize 是 Go 語言編寫的用於操作 Office Excel 文檔基礎庫,支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種文檔格式。2023年1月9日,社區正式發佈了 2.7.0 版本,該版本包含了多項新增功能、錯誤修複和相容性提升優化。 ...


github.com/xuri/excelize

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 個導出常量:OrientationPortraitOrientationLandscape
  • 修改了以下 21 個函數的簽名,使用結構體引用代替此前以 JSON 格式表示的選項參數,具體更改詳見官方文檔中的更新說明
  • 引入了 8 項新的函數代替現有函數,具體更改詳見官方文檔中的更新說明
  • CellType 枚舉值中添加 CellTypeFormula, CellTypeInlineString, CellTypeSharedString 並移除了 CellTypeString
  • 對添加批註 AddComment 函數的簽名進行了更改,支持創建富文本批註,相關 issue #1204
  • 當 XML 反序列化異常時將返回錯誤以代替輸出日誌,函數 GetComments, GetDefaultFontSetDefaultFont 增加了 error 類型的錯誤返回值

新增功能

  • 新增 GetDataValidationsGetConditionalFormats 函數以支持獲取數據驗證設置和條件格式,相關 issue #827
  • 新增 ProtectWorkbookUnprotectWorkbook 以提供工作簿保護設置支持
  • 新增 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, ShapeParagraphTableOptions
  • 新增 2 項公式函數: AGGREGATE 和 SUBTOTAL
  • SaveWriteWriteTo 函數支持指定保存選項,相關 issue #744
  • 使用 AddChart 函數添加圖表時,支持為折線圖設置是否使用平滑折線,相關 issue #1290
  • 使用 AddChart 函數添加圖表時,支持設置自定義折線圖線條顏色,相關 issue #1345
  • 使用 AddChart 函數添加圖表時,支持設置自定義坐標軸字體樣式,相關 issue #320
  • 添加圖表函數 AddChart 支持創建三維折線圖
  • 以下函數新增併發安全支持:SetColWidthGetColWidthSetColVisibleGetColVisibleSetColStyleGetColStyle
  • 設置樣式時,當給定的樣式 ID 不存在時將返回錯誤,相關 issue #1323
  • 流式按行賦值時,若行號未遞增將返回錯誤,以避免生成的工作簿損壞,相關 issue #1139
  • 按行流式寫入工作表時,支持通過指定 RowOpts 為單元格設置樣式,相關 issue #1354
  • 支持流式設置窗格,相關 issue #1047
  • 支持流式設置行內富文本單元格
  • 支持流式插入分頁符
  • 新增 7 項導出錯誤信息: ErrUnprotectWorkbookErrUnprotectWorkbookPasswordErrStreamSetPanesErrSheetNameBlankErrSheetNameInvalidErrSheetNameLengthErrSheetNameSingleQuote,以便開發者可根據不同的錯誤類型進行採取相應處理
  • 新增 5 項導出數據類型: HeaderFooterOptionsPageLayoutMarginsOptionsPageLayoutOptionsSheetPropsOptionsViewOptions
  • 支持設置分級顯示的明細數據方向
  • 支持讀取和設置單元格字體的主題顏色和色調,相關 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

Excelize 技術交流群

作者: Ri XuRi Xu's Blog on 博客園
出處:https://www.cnblogs.com/xuri
作品Ri Xu 創作,採用知識共用署名-非商業性使用-禁止演繹 2.5 中國大陸許可協議進行許可。 歡迎轉載,但任何轉載必須保留完整文章,在顯要地方顯示署名以及原文鏈接。如您有任何疑問或者授權方面的協商,請 給我留言
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2023-01-09 一、Mybatis核心配置文件概述及根標簽 1、核心配置文件的概述(即“mybatis-config.xml”) MyBatis的配置文件包含了會深深影響MyBatis行為的設置和屬性信息。 2、標簽 (1)configuration(配置) (2)properties(屬性) ...
  • Redis 數據結構-簡單動態字元串 無邊落木蕭蕭下,不盡長江滾滾來。 1、簡介 Redis 之所以快主要得益於它的數據結構、操作記憶體資料庫、單線程和多路 I/O 復用模型,進一步窺探下它常見的五種基本數據的底層數據結構。 Redis 常見數據類型對應的的底層數據結構。 String:簡單動態字元串 ...
  • 前言 今天給大家介紹的是Python爬蟲批量下載評書音頻並保存本地,在這裡給需要的小伙伴們代碼,並且給出一點小心得。 首先是爬取之前應該儘可能偽裝成瀏覽器而不被識別出來是爬蟲,基本的是加請求頭,但是這樣的純文本數據爬取的人會很多,所以我們需要考慮更換代理IP和隨機更換請求頭的方式來對評書精選音頻進行 ...
  • 互聯網世界里最流行的開源關係型資料庫之一就是MySQL/MariaDB了,由於高度的相似,故而直接使用mysql統一指稱。 ...
  • 項目地址:https://github.com/pikeduo/TXTReader PyQt5中文手冊:https://maicss.gitbook.io/pyqt-chinese-tutoral/pyqt5/ QtDesigner學習地址:https://youcans.blog.csdn.net ...
  • 14. 最長公共首碼 題目描述 編寫一個函數來查找字元串數組中的最長公共首碼。 如果不存在公共首碼,返回空字元串 ""。 方法 暴力演算法 先判斷字元串數組是否有為空,為空直接返回空 令第一個字元串作為基準進行比較 設置一個長度,作為最後最長公共首碼的長度 迴圈判斷,選取最小長度 代碼 package ...
  • 2023-01-09 一、在IDEA中創建Maven版的web工程 (1)步驟: ①創建一個maven模塊,命名為“maven_web_end”,之後需要創建web工程的目錄。在“maven_web_end.src.main”下創建“webapp”文件夾(命名必須為webapp,否則識別不了);在“ ...
  • 作者:小牛呼嚕嚕 | https://xiaoniuhululu.com 電腦內功、JAVA底層、面試相關資料等更多精彩文章在公眾號「小牛呼嚕嚕 」 大家好,我是呼嚕嚕,這次我們一起來看看Java記憶體區域,本文 基於HotSpot 虛擬機,JDK8, 乾貨滿滿 前言 Java 記憶體區域, 也叫運行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...