Excelize 2.9.0 Released - Powerful open-source library for spreadsheet (Excel) document

·

6 min read

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)