Excelize is a library written in pure Go providing a set of functions that allow you to write to and read from XLAM / XLSM / XLSX / XLTM / XLTX files. Supports reading and writing spreadsheet documents generated by Microsoft Excel™ 2007 and later. Supports complex components by high compatibility, and provided streaming API for generating or reading data from a worksheet with huge amounts of data.
- GitHub: github.com/xuri/excelize
Excelize GitHub Star History
We are pleased to announce the release of version 2.11.0. Featured are a handful of new areas of functionality and numerous bug fixes.
Release Notes
The most notable changes in this release are:
Breaking Change
- Upgraded requirement: Go language version is 1.25.0 or later, due to upgrading dependency package
golang.org/x/net - Breaking changes for the
AddChart,AddChartSheetandAddShapefunctions- Change
Titlefield data type ofChartfrom[]RichTextRuntoChartTitle - Change
Linefield data type ofShapefromShapeLinetoLineOptions - Renamed data type
ChartDashTypetoLineDashType - Renamed data type
ChartLineTypetoLineType - Renamed data type
ChartLinetoLineOptions
- Change
Security
- Check row number when reading worksheet to prevent unbounded memory allocation (CVE-2026-54063), related security advisories GHSA-h69g-9hx6-f3v4
- Prevent attacker-controlled allocations by validating against worksheet row number overflow maximum limitation (CVE-2026-59161), related security advisories GHSA-q5j5-6p94-4gwc
- Prevent panic on getting cell value with invalid shared string table index (CVE-2026-59162), related security advisories GHSA-fx5j-qcqg-grpf
Notable Features
- Added new
ChartTitledata type - Added new
PivotTableShowValuesAsdata type - Added new
PivotTableShowValuesAsTypeenumeration - Added 3 new exported error variables:
ErrPivotTableShowValuesAsBaseField,ErrPivotTableShowValuesAsBaseItemandErrUnsupportedPivotTableShowValuesAsType - Added new field
ShowValuesAsinPivotTableFielddata type - Added new field
SelectedItemsinPivotTableOptionsandSlicerOptionsdata types - Added new function
AutoFitColWidthto support auto fit columns width, related issue #92 - The
SetSheetNamefunction allow sheet rename for invalid source names, related issue #548 - The
CalcCellValuefunction supports tilde wildcard criteria - The
CalcCellValuefunction supports implicit intersection and fixes regex criteria anchoring - The
CalcCellValuefunction supports 3D references across sheet ranges, related issue #2303 - The
CalcCellValuefunction supports returning formula calculation result with raw cell value, related issue #2316 - The
AddPivotTablefunction supports checking whether the same data field appears in pivot table column, rows and filter fields, to prevent generating a corrupted workbook - The
AddPivotTableandGetPivotTablesfunctions support setting and getting show values as of pivot table data fields, related issue #2340 - The
AddPivotTable,AddSlicer,GetPivotTablesandGetSlicersfunctions support setting and getting selected items for pivot table and pivot table slicer, related issue #2154 - The
AddChartandAddChartSheetfunctions support setting chart title with formula - The
AddChartandAddChartSheetfunctions support setting chart title and chart axis title’s layout - The
AddChartandAddChartSheetfunctions support setting line format for chart title and chart axis title - The
AddShapefunction supports setting line format of shapes - The
NewStylefunction supports auto foreground and background color when creating solid fill style when no custom color value is specified
Compatibility Improvements
- Fixed chart sheet not showing charts on Excel Online and KingSoft WPS™ Office, related issue #2273
Bug Fixes
- Fixed a v2.8.1 regression issue #1383
- Fixed
AddChartfunction panic when adding a chart with no fill series - Fixed
CalcCellValuefunction panic on invalid row reference in some cases, resolved issue #2266 - Fixed formula exact text matching not matching substrings when using
CalcCellValuefunction - Fixed
CalcCellValuefunction calculation accuracy issue for formula functions BINOM.INV, CHIINV, CHISQ.DIST, IMSECH, IMSQRT and NEGBINOM.DIST - Fixed
CalcCellValuefunction returning incorrect calculation result of FREQUENCY in some cases - Fixed
CalcCellValuefunction returning incorrect calculation result when error values inside parentheses or operators, resolved issue #2344 - Fixed
AddCommentfunction assigning incorrect author ID for all comments when author already exists in authors list, resolved issue #2289 - Fixed potential deadlock related to file unlocker not being called before returning an error
- Fixed custom number format with comma scaling not properly applied, resolved issue #2297
- Fixed panic on reading corrupted workbook containing invalid worksheet XML by column iterator, resolved issue #2299
- Fixed missing single quote after adjusting formulas which include external references
- Fixed failure to decrypt workbooks protected by ECMA-376 agile encryption with SHA512 hash algorithm in some cases, resolved issue #2328
- Fixed
SetCellFormulafunction not clearing shared formula metadata when overwriting with a normal formula, resolved issue #2337
Performance
- Reduced memory usage for reading unencrypted workbooks, reducing rows iterator memory usage by at most 85%
- Optimized the coordinates conversion and some internal functions performance
- The
ColumnNumberToNamefunction memory allocation reduced by about 90% - The
CoordinatesToCellNamefunction memory allocation reduced by about 13% - The internal
isNumericfunction memory allocation reduced by about 68%
- The
Miscellaneous
- The dependencies module has been updated
- Unit tests and godoc updated
- Documentation website with multilingual: Arabic, German, English, Spanish, French, Italian, Japanese, Korean, Portuguese, Russian, Chinese Simplified and Chinese Traditional, which has been updated.
- excelize-wasm NPM package release update for WebAssembly / JavaScript support
- excelize PyPI package release update for Python
- ExcelizeCs NuGet .Net package release for C#
Thank you
Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:
- Rynzie02 (Rynzie)
- jpoz (James Pozdena)
- tvso (Tammy)
- yyt030 (yyt)
- hwo411 (Igor Khodyrev)
- JimLee0921 (TuoLee)
- zhuyanhuazhuyanhua (zhuhua)
- kenny-not-dead (Roman Sergeev)
- debugdoctor (Debug Doctor)
- Journeyman150 (Vladislav Anisimov)
- ivolkoff (Ivan Volkov)
- plandem (Andrey G.)
- martskins
- shcabin
- narasaka (Nathanael Tehilla Gunawan)
- lawrence3699 (chaoliang yan)
- SAY-5 (Sai Asish Y)
- noahchiu22 (Noah)
- rootsec1 (Abhishek Murthy)
- guangxuewu
- AdamDrewsTR (Adam Drews)
- grmblfrz (Swen Thümmler)
- WaterRRabbit
- krystophny (Christopher Albert)
- Aprax14 (Damiano Scarpellini)
- artur-chopikian (Artur Chopikian)
- huijian3139 (Jason)

