Excelize 2.9.0 Released - Open-source library for Excel (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets

Excelize 2.9.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.

GitHub: github.com/xuri/excelize

We are pleased to announce the release of version 2.9.0. Featured are a handful of new areas of functionality and numerous bug fixes.

A summary of changes is available in the Release Notes. A full list of changes is available in the changelog.

Release Notes


The most notable changes in this release are:

Breaking Change

  • Change the data type for the ConditionalFormatOptions structure field Format as a pointer, resolve issue #1867

Notable Features

  • Add new functions DeleteSlicer and GetSlicers, related issue #810
  • Add new function MoveSheet to support changing sheet order in the workbook, related issue #1076
  • Add new AutoFitIgnoreAspect field in the GraphicOptions data type support for fill the cell with the image and ignore its aspect ratio
  • Add new TickLabelPosition field in the ChartAxis data type support for set label position of the chart
  • Add new fields ShowAll, InsertBlankRow and NumFmt field in the PivotTableField data type
  • Add new fields ClassicLayout, FieldPrintTitles and ItemPrintTitles in the PivotTableOptions data type
  • Introduce 2 new exported enumeration type ChartTickLabelPositionType and PictureInsertType
  • Introduce new exported ChartLineUnset enumeration value
  • Introduce 4 constants ExtURIDataField, ExtURIPivotField, ExtURIPivotFilter and ExtURIPivotHierarchy
  • Introduce new exported error variable ErrPivotTableClassicLayout
  • The MergeCell function support clear slave cells value when merging cells
  • The AddDataValidation, DeleteDataValidation and GetCellStyle functions support concurrency safe, related issues #1825
  • The GetDataValidations function support get data validations which storage in the extension lists, related issue #1835
  • The SetSheetName function support case sensitivity, related issue #1856
  • The GetPictureCells and GetPictures functions support for get the cell images inserted by IMAGE formula function and absolute paths for pictures
  • The SetCellHyperLink function support remove hyperlink by None linkType, related issue #1940
  • The AddChart function support create combo chart with same types, related issue #1940
  • The AddChart function support set line type of scatter chart
  • An error will be return if column header cell is empty in pivot table data range when create pivot table by AddPivotTable function, related issue #1945
  • Add support for applying number format expression with language/location tags and ID
  • Add support for apply number format for time and duration cell value, related issue #2004
  • New support formula function: DOLLAR

Improve the Compatibility

  • Improve compatibility for apply number format, support apply number format with alignment, resolve issue #1847
  • Improvement compatibility for the workbook internal part with a spreadsheet namespace prefix, resolve issue #1886
  • Improve compatibility for the workbook internal media files with absolute path, resolve issue #1888

Bug Fixes

  • Fix a v2.8.1 regression bug, auto filter doesn’t work in the LibreOffice, resolve issue #1830
  • Fix a v2.8.1 regression bug, support to adjust data validation with multiple cell range, resolve issue #1831
  • Fix a v2.8.1 regression bug, error on duplicate rows, if conditional formatting or data validation has multiple cell range reference
  • Fix a v2.8.1 regression bug, incorrect cell value written if save multiple times, resolve issue #1906
  • Fix a v2.8.1 regression bug, spark lines duplicate when creating spark lines on multiple sheets, resolve issue #1910
  • The CalcCellValue function support calculate formula functions ISNUMBER, OR and FIND with matrix arguments, resolve issue #1819
  • Fix the CalcCellValue function calculation result round issue, resolve issue #1851
  • Fix the CalcCellValue function returns incorrect result of formula functions XIRR and XNPV, resolve issue #1989
  • Fix the RemoveCol returns error when deleting columns, resolve issue #1829
  • Fix incorrect result data type of the DATE formula function, resolve issue #1833
  • Fix panic on read workbook with internal row element without r attribute
  • Fix parentheses in formulas get cut out when inserting new columns or rows, resolve issue #1861
  • Fix incorrect data validation escape result in some cases
  • Fix some character can’t be displayed in stream writer, resolve issue #1865
  • Saving workbook with sorted internal part path to keep same hash of identical files and fix incorrect MIME type, resolve issue #1889
  • Fix the AddChart function set axis format doesn’t work in combo chart, resolve issue #1921
  • Fix the AddChart function set incorrect primary axis titles position
  • Fix the AddChart function set secondary vertical axis title is not displayed, resolve issue #1926
  • Fix the AddChart function set line type of line chart does not work
  • Fix the GetPivotTables function returns incorrect data range, resolve issue #1937
  • Fix the GetStyle function panic when theme without sysClr, resolve issue #1963
  • Fix the GetCellRichText function returns error when read cell without SST index, resolve issue #1999
  • Fix the SetSheetVisible function panic on none views sheet, resolve issue #1969
  • Fix percent sign missing in formatted result for zero numeric cell value, resolve issue #1942
  • Fix missing horizontal axis in scatter chart with negative values
  • Fix missing shape macro missing after adjusted drawing object, resolve issue #1957
  • Fix missing conditional formatting after remove column in some cases, resolve issue #1968
  • Fix read cell value with decimal value round issue, resolve issue #1979
  • Support to set cell value with an IEEE 754 “not-a-number” value or infinity, resolve issue #119

Performance

  • Fix v2.8.0 regression speed slowdown and memory usage increase issue
  • Reduce memory usage for the GetRows function, related issue #1874
  • Optimize ColumnNumberToName function performance, reduce about 50% memory usage and 50% time cost

Miscellaneous

  • The dependencies module has been updated
  • Unit tests and godoc updated
  • Documentation website with multilingual: Arabic, German, English, Spanish, French, Japanese, Korean, Portuguese, Russian, Chinese Simplified and Chinese Traditional, which has been updated. Added Italian version of the document

Thank you

Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:

  • mirgong (helloWorld)
  • YueChenXu-Kimi (岳晨旭)
  • JackMin1314 (陈王)
  • paolobarbolini (Paolo Barbolini)
  • iEvan-lhr (Evan lu)
  • yetyear (yeahyear)
  • ha5ky (hu5ky)
  • lizhichao (vic)
  • realzuojianxiang (realzuojianxiang)
  • msackman (Matthew Sackman)
  • yyle88 (yangyile-yyle88)
  • yunkeweb (yunkeweb)
  • iraj720 (Nima)
  • jianxinhou
  • barlevd
  • 18409615759 (nna)
  • qijinkui (xiaokui)
  • user1121114685 (联盟少侠)
  • wangsongyan
  • vsemichev (Vovka Morkovka)
  • zhayt (Aybek)
  • ShowerBandV (ShowerBandV)
  • imink (Patrick Wang)
  • samkeke (wxy)
  • pjh591029530
  • zhangyimingdatiancai
  • wanghaochen2024
  • centurion-hub
  • peng (Zhang Zhipeng)
  • slashdotdash (Ben Smith)
  • ArcholSevier
  • liuwangchao
  • Zncl2222 (Jian Yu, Chen)
2 Likes