DEV Community

xuri
xuri

Posted on

3 1 1 1 1

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

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)

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay