Excelize 開源基礎庫發布 2.9.1 版本更新

Excelize 開源基礎庫 2.9.1 版本發布, 2025 年首個更新

Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎庫,基于 ECMA-376,ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Excel、WPS、OpenOffice 等辦公軟件創建的電子表格文檔。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復雜組件的文檔,并提供流式讀寫支持,用于處理包含大規模數據的工作簿。可應用于各類報表平臺、云計算、邊緣計算等系統。自 2016 年開源以來已成為云原生應用尤其是 Go 語言開發者在處理電子表格辦公文檔時的熱門選擇,正在被廣泛應用于大型互聯網公司、中小企業客戶和初創公司。入選 2023 開源創新榜優秀開源項目、榮獲 2022 年中國開源創新大賽一等獎、2020 Gopher China - Go 領域明星開源項目 (GSP)、2018 年開源中國碼云最有價值開源項目 GVP (Gitee Most Valuable Project)。

開源代碼

GitHub: github.com/xuri/excelize
中文文檔: xuri.me/excelize/zh-hans

2025年5月13日,社區正式發布了 2.9.1 版本,該版本包含了多項新增功能、錯誤修復和兼容性提升優化。下面是有關該版本更新內容的摘要,此版本中最顯著的變化包括:

版本說明

此版本中最顯著的變化包括:

兼容性提示

  • 升級 Go 語言版本要求至 1.23 或更高版本,以升級依賴包 golang.org/x/crypto
  • DataValidationTypeDataValidationErrorStyleDataValidationOperatorPictureInsertType 的數據類型由 int 變更為 byte
  • 函數 SetCellInt 的形參類型改為 int64,解決 issue 2068
  • 添加圖片、圖表、形狀和表單控件等繪圖對象時,偏移設置將不再影響繪圖對象的尺寸,解決 issue 2001

新增功能

  • Chart 數據類型中新增 GapWidthOverlap 字段
  • ChartPlotArea 數據類型中新增 ShowDataTableShowDataTableKeys 字段
  • ChartAxis 數據類型中新增 Alignment 字段
  • ChartSeries 數據類型中新增 DataLabel 字段
  • PageLayoutOptions 數據類型中新增 PageOrder 字段
  • 新增 2 項錯誤變量:ErrPageSetupAdjustToErrStreamSetColStyle
  • 新增 2 項枚舉類型:HeaderFooterImagePositionTypeIgnoredErrorsType
  • 新增 2 項數據類型:CalcPropsOptionsHeaderFooterImageOptions
  • 新增 2 項函數 SetCalcPropsGetCalcProps 支持設置和獲取工作簿計算屬性
  • 新增 AddHeaderFooterImage 函數,支持在頁眉和頁腳中設置圖片,相關 issue 1395
  • 新增 AddIgnoredErrors 函數,支持忽略特定單元格范圍內的錯誤,相關 issue 2046
  • 新增 SetColStyle 函數,支持流式寫入時設置列樣式,相關 issue 2075
  • 函數 AddChartAddChartSheet 支持設置圖表坐標軸文本方向和旋轉角度,相關 issue 2025
  • 函數 AddChartAddChartSheet 支持設置柱狀圖和條形圖的間隙寬度和重疊程度,相關 issue 2033
  • 函數 AddChartAddChartSheet 支持設置數據系列標簽的格式,相關 issue 2052
  • 函數 AddChartAddChartSheet 支持設置位于圖表繪圖區域下方的數據表,相關 issue 2117
  • 函數 AddFormControl 函數支持為復選框類型的表單控件設置單元格超鏈接,相關 issue 2113
  • 函數 SetPageLayout 支持設置頁面布局的頁面順序
  • 函數 DeletePicture 支持刪除帶有單一單元格錨定類型的圖片,相關 issue 2059
  • 函數 SetPageLayout 增加了對選項參數的檢查,如果給定的選項值無效,將返回錯誤提示信息
  • 支持跨多個工作表調整數據驗證,相關 issue 2072
  • 支持應用帶 # 號和零占位符的數字格式,相關 issue 2058
  • 支持應用帶 ? 符號的數字格式
  • 支持通過指定 “oneCell” 定位類型添加帶有單一單元格錨定類型的繪圖對象,相關 issue 2002

問題修復

  • 修復 v2.9.0 中引入的問題,修改由流式寫入生成的工作簿后,打開后提示文檔損壞問題,解決 issue 2015
  • 修復部分情況下生成重復的“無填充”格式問題,解決 issue 2014
  • 修復部分情況下單元格垂直或水平邊框樣式丟失問題,解決 issue 2048
  • 修復部分情況下條件格式邊框樣式丟失的問題,解決 issue 2061
  • 修復部分情況下獲取數據透視表時出現 panic 的問題,解決 issue 1954
  • 修復 GetStyle 函數無法獲取 VertAlign 格式的問題
  • 修復 CalcCellValue 函數在部分情況下子表達式計算錯誤的問題,解決 issue 2083
  • 修復部分情況下因圖片引用檢查有誤導致的錯誤刪除圖片問題
  • 修復流式寫入時,非零行樣式 ID 未覆蓋默認單元格樣式的問題
  • 修復流式寫入時,部分情況下將在工作簿內部生成重復的 col XML 元素問題
  • 修復部分情況下設置圖表標題字體時出現的 panic 問題,解決 issue 2102
  • 修復部分情況下刪除公式計算鏈時出現的 panic 問題
  • 修復因共享公式解析錯誤導致的公式計算結果有誤問題,解決 issue 2056
  • 修復當工作簿內部包含大于 4GB 的部件時,生成的 ZIP64 格式文檔損壞問題
  • 修復當部分情況下重命名工作表時,自定義名稱中的工作表名稱更新有誤的問題,解決 issue 2126

性能優化

  • 使用深拷貝庫 github.com/tiendc/go-deepcopy 代替 github.com/mohae/deepcopy,深度拷貝速度提升 3 倍,相關 issue 2029
  • 修復 v2.9.0 中引入的問題,避免對空白單元格的值進行修剪以降低內存分配
  • 提高公式計算引擎對帶有整行或整列單元格引用公式的計算速度
  • 行迭代器讀取速度最高提升約 20%,內存分配降低約 10%

其他

  • Go Modules 依賴模塊更新
  • 單元測試與文檔更新
  • 包含阿拉伯語、德語、英語、西班牙語、法語、意大利語、日語、韓語、葡萄牙語、俄語、簡體中文和繁體中文的多國語言文檔網站更新
  • 支持 WebAssembly / JavaScript 的 excelize-wasm NPM 包發布版本更新
  • 支持 Python 的 excelize PyPI 包發布版本更新

致謝

感謝 Excelize 的所有貢獻者,以下是為此版本提交代碼的貢獻者列表:

  • wushiling50
  • imirkin (Ilia Mirkin)
  • Juneezee (Eng Zer Jun)
  • Arpelicy
  • zhuhaicity (ZhuHaiCheng)
  • xxf0512 (xxf)
  • gypsy1234
  • mengpromax (MengZhongYuan)
  • hly-717
  • kurtinge (Kurt Inge Sm?dal)
  • IvanHristov98 (Ivan Hristov)
  • artur-chopikian (Artur Chopikian)
  • romanshevelev (Roman Shevelev)
  • LZCZ
  • hm3248
  • moisespsena (Moises P. Sena)
  • paolobarbolini (Paolo Barbolini)
  • timesince
  • shcabin
  • tgulacsi (Tamás Gulácsi)
  • R3dByt3 (R3dByt3)
  • Now-Shimmer

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80661.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80661.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80661.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

xss-labs靶場基礎8-10關(記錄學習)

前言: 內容: 第八關 關卡資源網站,html編碼網站(兩個網站,一個是實體編號轉義(只對特殊字符有效,字母無效)、實體符號轉義) 在線Html實體編碼解碼-HTML Entity Encodi…

Kafka topic 中的 partition 數據傾斜問題

在 Kafka 中,如果一個 Topic 有多個 Partition,但這些 Partition 中的消息數量或流量分布不均衡,就會出現 數據傾斜(Data Skew) 的問題。 ? 什么是數據傾斜? 數據傾斜指的是: 某些 Partitio…

Retrofit vs Feign: 介紹、對比及示例

1. 介紹 Retrofit Retrofit 是 Square 公司開發的一個類型安全的 HTTP 客戶端庫,主要用于 Android 和 Java 應用。它將 HTTP API 轉換為 Java 接口,通過注解來描述 HTTP 請求。 主要特點: 基于注解的 API 定義支持同步和異步調用支持多種數據格式轉換…

SpringBoot整合MyBatis-Plus:零XML實現高效CRUD

前言 作為一名開發者,數據庫操作是我們日常工作中不可或缺的部分。傳統的MyBatis雖然強大,但需要編寫大量XML映射文件,這在快速開發的今天顯得效率不足。MyBatis-Plus(簡稱MP)作為MyBatis的增強工具,在保留…

SpringCloud之Gateway基礎認識-服務網關

0、Gateway基本知識 Gateway 是在 Spring 生態系統之上構建的 API 網關服務,基于 Spring ,Spring Boot 和 Project Reactor 等技術。 Gateway 旨在提供一種簡單而有效的方式來對 API 進行路由,以及提供一些強大的過濾器功能,例如…

Redis掃盲

Redis 緩存中間件 基礎篇 鍵值數據庫 key Value 是NoSql數據庫 非結構化、無關聯的、非SQL、BASE(無法滿足ACID) 命令執行是單線程,符合原子性。 低延遲、速度塊(基于內存,IO多路復用,良好的編碼&am…

【FMMT】基于模糊多模態變壓器模型的個性化情感分析

遇到很難的文獻看不懂,不應該感到氣餒,應該激動,因為外審估計也看不太懂,那么學明白了可以嚇唬他 缺陷一:輸入依賴性與上下文建模不足?? ??缺陷描述??: 傳統自注意力機制缺乏因果關系,難以捕捉序列歷史背景多模態數據間的復雜依賴關系未被充分建模CNN/RNN類模型在…

Qt Creator 配置 Android 編譯環境

Qt Creator 配置 Android 編譯環境 環境配置流程下載JDK修改Qt Creator默認android配置文件修改sdk_definitions.json配置修改的內容 Qt Creator配置 異常處理刪除提示占用編譯報錯連接安卓機調試APP閃退無法進入 debug 斷點 環境 Qt Creator 版本 qtcreator-16.0.1Win10 嗯, …

使用聊天模型和提示模板構建一個簡單的 LLM 應用程序

官方教程 官方案例 在上面的鏈接注冊后,請確保設置您的環境變量以開始記錄追蹤 export LANGSMITH_TRACING"true" export LANGSMITH_API_KEY"..."或者,如果在筆記本中,您可以使用以下命令設置它們 import getpass imp…

React vs Vue:點擊外部事件處理的對比與實現

React vs Vue:點擊外部事件處理的對比與實現 在 Web 應用中,“點擊外部事件監聽”是一種常見需求,典型應用如:點擊彈窗外部關閉彈窗、點擊下拉菜單外關閉菜單。雖然在 React 和 Vue 中實現的原理類似——都是通過監聽 document 的…

3335. 字符串轉換后的長度 I

3335. 字符串轉換后的長度 I class Solution:def lengthAfterTransformations(self, s: str, t: int) -> int:# 大質數mod 10**97# 創建一個長度為26的數組cnt,對應26個小寫字母cnt [0]*26# 計算出s中26個字符分別有多少個for ch in s:cnt[ord(ch)-ord(a)] 1f…

Java詳解LeetCode 熱題 100(15):LeetCode 189. 輪轉數組(Rotate Array)詳解

文章目錄 1. 題目描述2. 理解題目3. 解法一:使用額外數組3.1 思路3.2 Java代碼實現3.3 代碼詳解3.4 復雜度分析3.5 適用場景 4. 解法二:環狀替換法(原地算法)4.1 思路4.2 Java代碼實現4.3 代碼詳解4.4 復雜度分析4.5 陷阱與注意事…

數據治理域——日志數據采集設計

摘要 本文主要介紹了Web頁面端日志采集的設計。首先闡述了頁面瀏覽日志采集,包括客戶端日志采集的實現方式、采集內容及技術亮點。接著介紹了無線客戶端端日志采集,包括UserTrack的核心設計、移動端與瀏覽器端采集差異以及典型應用場景崩潰分析。最后探…

PYTHON訓練營DAY24

# SO代碼我們的感情好像跳樓機 # 元組創建時,可以省略括號:my_tuple4 10, 20, thirty # 字符串要加“ ” 元組 一、創建 my_tuple1 (1, 2, 3) my_tuple2 (a, b, c) my_tuple3 (1, hello, 3.14, [4, 5]) # 可以包含不同類型的元素 print(my_tupl…

超聲波傳感器模塊

歡迎來到 破曉的歷程的 博客 ??不負時光,不負己?? 文章目錄 1.HC-SR04介紹2.HC-SR04原理介紹2.1原理概述3.2原理詳解 4驅動代碼編寫4.1寫前思考4.2硬件連線 5.總結hcsr04.hhcsr04.c 1.HC-SR04介紹 超聲波傳感器有很多種類的型號:HC-SR04、UC-025、…

《Effective Python》第2章 字符串和切片操作——深入理解Python 中的字符數據類型(bytes 與 str)的差異

引言 本篇博客基于學習《Effective Python》第三版 Chapter 2: Strings and Slicing 中的 Item 10: Know the Differences Between bytes and str 的總結與延伸。在 Python 編程中,字符串處理是幾乎每個開發者都會頻繁接觸的基礎操作。然而,Python 中的…

py7zr解壓文件時報錯CrcError(crc32, f.crc32, f.filename)

報錯信息 Traceback (most recent call last):File "/home/hp/project/test/file_util.py", line 130, in extract_archive_7zarchive.extract(targets[fixed_file], pathoutput_dir, recursiveTrue)File "/home/hp/miniconda3/envs/celery/lib/python3.10/sit…

物理:由基本粒子組成的個體能否提煉和重組?

個體差異源于基本粒子組合的復雜性與隨機性,這一假設若成立,確實可能為生物醫學帶來革命性突破——但需要突破技術、理論與系統層級的多重壁壘。以下從科學邏輯與技術路徑展開分析: 一、隨機組合中的共性與穩定結構 1. 自然界的自組織規律 涌現性(Emergence):盡管粒子組…

動態路由EIGRP的配置

動態路由EIGRP的配置 動態路由EIGRP:增強內部網關協議 為何收斂快、不成環? 路由計算的無環路和路由的收斂速度是路由計算的重要指標。EIGRP協議由于使用了DUAL算法,使得EIGRP協議在路由計算中不可能有環路路由產生,同時路由計…

組合問題(多條件)

39. 組合總和 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:vector<vector<int>>result;vector<int>path;void backtracking(vector<int>& candidates, int target,int sum,int startIndex){if(sum>target){return;}if(…