10th Anniversary of the Excelize Open Source, 2.11.0 Released

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.

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, AddChartSheet and AddShape functions
    • Change Title field data type of Chart from []RichTextRun to ChartTitle
    • Change Line field data type of Shape from ShapeLine to LineOptions
    • Renamed data type ChartDashType to LineDashType
    • Renamed data type ChartLineType to LineType
    • Renamed data type ChartLine to LineOptions

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 ChartTitle data type
  • Added new PivotTableShowValuesAs data type
  • Added new PivotTableShowValuesAsType enumeration
  • Added 3 new exported error variables: ErrPivotTableShowValuesAsBaseField, ErrPivotTableShowValuesAsBaseItem and ErrUnsupportedPivotTableShowValuesAsType
  • Added new field ShowValuesAs in PivotTableField data type
  • Added new field SelectedItems in PivotTableOptions and SlicerOptions data types
  • Added new function AutoFitColWidth to support auto fit columns width, related issue #92
  • The SetSheetName function allow sheet rename for invalid source names, related issue #548
  • The CalcCellValue function supports tilde wildcard criteria
  • The CalcCellValue function supports implicit intersection and fixes regex criteria anchoring
  • The CalcCellValue function supports 3D references across sheet ranges, related issue #2303
  • The CalcCellValue function supports returning formula calculation result with raw cell value, related issue #2316
  • The AddPivotTable function supports checking whether the same data field appears in pivot table column, rows and filter fields, to prevent generating a corrupted workbook
  • The AddPivotTable and GetPivotTables functions support setting and getting show values as of pivot table data fields, related issue #2340
  • The AddPivotTable, AddSlicer, GetPivotTables and GetSlicers functions support setting and getting selected items for pivot table and pivot table slicer, related issue #2154
  • The AddChart and AddChartSheet functions support setting chart title with formula
  • The AddChart and AddChartSheet functions support setting chart title and chart axis title’s layout
  • The AddChart and AddChartSheet functions support setting line format for chart title and chart axis title
  • The AddShape function supports setting line format of shapes
  • The NewStyle function 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 AddChart function panic when adding a chart with no fill series
  • Fixed CalcCellValue function panic on invalid row reference in some cases, resolved issue #2266
  • Fixed formula exact text matching not matching substrings when using CalcCellValue function
  • Fixed CalcCellValue function calculation accuracy issue for formula functions BINOM.INV, CHIINV, CHISQ.DIST, IMSECH, IMSQRT and NEGBINOM.DIST
  • Fixed CalcCellValue function returning incorrect calculation result of FREQUENCY in some cases
  • Fixed CalcCellValue function returning incorrect calculation result when error values inside parentheses or operators, resolved issue #2344
  • Fixed AddComment function 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 SetCellFormula function 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 ColumnNumberToName function memory allocation reduced by about 90%
    • The CoordinatesToCellName function memory allocation reduced by about 13%
    • The internal isNumeric function memory allocation reduced by about 68%

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)
1 Like

Thank you for all the work you have done on this over the years. Excelize is the best Excel library I’ve used.

1 Like

Thank you so much for the kind words! Hearing feedback like this makes all the hard work over the years completely worth it. I’m thrilled that Excelize has been serving you well.

1 Like