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 fieldFormat
as a pointer, resolve issue #1867
Notable Features
- Add new functions
DeleteSlicer
andGetSlicers
, related issue #810 - Add new function
MoveSheet
to support changing sheet order in the workbook, related issue #1076 - Add new
AutoFitIgnoreAspect
field in theGraphicOptions
data type support for fill the cell with the image and ignore its aspect ratio - Add new
TickLabelPosition
field in theChartAxis
data type support for set label position of the chart - Add new fields
ShowAll
,InsertBlankRow
andNumFmt
field in thePivotTableField
data type - Add new fields
ClassicLayout
,FieldPrintTitles
andItemPrintTitles
in thePivotTableOptions
data type - Introduce 2 new exported enumeration type
ChartTickLabelPositionType
andPictureInsertType
- Introduce new exported
ChartLineUnset
enumeration value - Introduce 4 constants
ExtURIDataField
,ExtURIPivotField
,ExtURIPivotFilter
andExtURIPivotHierarchy
- Introduce new exported error variable
ErrPivotTableClassicLayout
- The
MergeCell
function support clear slave cells value when merging cells - The
AddDataValidation
,DeleteDataValidation
andGetCellStyle
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
andGetPictures
functions support for get the cell images inserted by IMAGE formula function and absolute paths for pictures - The
SetCellHyperLink
function support remove hyperlink byNone
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 withoutsysClr
, 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)