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

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

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.8.1. 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

  • Upgrade requirements Go language version is 1.18 or later, for upgrade of dependency package golang.org/x/net
  • Change the data type for the HeaderFooterOptions structure fields AlignWithMargins and ScaleWithDoc as a pointer, resolve issue #1645
  • Remove unused exported data structure ShapeColor

Notable Features

  • Add new exported function SetCellUint, related issue #1681
  • Add new exported function GetPictureCells for get all picture cells, related issue #1218
  • Add new exported function GetConditionalStyle for get the conditional format style definition, related issue #1690
  • Add new exported function GetHeaderFooter for get the worksheet header and footer
  • Add new exported function AddSlicer for adding table and pivot table slicers
  • Add new exported function GetPivotTables for get pivot tables
  • Add new exported function DeletePivotTable for delete pivot table
  • Add a new Name field in the PivotTableOptions to support specify pivot table name
  • New support 7 formula functions: DBCS, SEARCH, SEARCHB, TEXT, TEXTAFTER, TEXTBEFORE and xlfn.ANCHORARRAY
  • Add export ChartLineType enumeration to specify the chart line type, related issue #1706
  • Add new Border field in the Chart data type to set the chart area border
  • Add new Type field in the ChartLine type to set the line type
  • Add new exported source relationship and namespace NameSpaceSpreadSheetXR10, ContentTypeSlicer, ContentTypeSlicerCache, and SourceRelationshipSlicer
  • Add new exported extended URI ExtURIPivotCacheDefinition
  • Allow dot character in the defined name, table name, or pivot table name
  • Keep all cells value in the table range when deleting table
  • Support format cell value with fraction number format code
  • Support delete image files from the workbook internally when deleting pictures to reduce generated workbook size and resolve potential security issues
  • Support set the height and width for the comment box, related issue #1688
  • Support update conditional formatting, data validations, defined names, drawing objects, formula reference and volatile dependencies on inserting/deleting columns/rows, related issues #1306 and #1615
  • Support 6 new kinds of conditional formatting types: text, blanks, no blanks, errors, no errors and time period
  • Support calculate formula with multiple dash arithmetic symbol
  • Support copy conditional format and data validation on duplicate row, related issue #1729
  • Support unset custom row height if the height value is -1 when using the SetRowHeight function
  • The SetRowHeight function will return an error if given an invalid row height value
  • The AddChart function support set the data labels position for the chart, related issue #1704
  • The AddChart function support set solid color or transparent fill for chart area, plot area, and maker, add a new field Fill in Chart, ChartPlotArea, and ChartMarker data type, related issue #1786
  • The AddChart function support set chart axis font family, size and strike style, related issue #1809
  • Add new field DataLabelPosition in the ChartSeries data type, support to sets the position of the chart series data label
  • Add new field BubbleSize in the Chart data type, support set the bubble size in all data series for the bubble chart or 3D bubble chart
  • Add new exported ChartDataLabelPositionType data type
  • The GetPictureCells and GetPictures function support get embedded cell images created by Kingsoft WPS™ Office, related issue #664
  • The SetConditionalFormat function support set conditional formatting with multiple cell ranges, related issue #1783
  • Support to update defined names reference when rename worksheet, related issue #1792
  • Add new GetBaseColor function support get the preferred hex color code, related issue #1794
  • The calculation engine support date and formula type cells, related issue #1807
  • Cell value reading functions inherit the Options settings of the OpenReader, related issue #1815

Improve the Compatibility

  • Improve compatibility for absolute path drawing part
  • Improve compatibility for workbook internal tab ratio property value
  • Improve compatibility with empty custom number format code
  • Improve compatibility with the viewer which doesn’t support default theme part namespace, related issue #1694
  • Improve delete cell comment shape compatibility with KingSoft WPS™ Office, related issue #1789
  • Saving workbook with sorted internal part path, make identically created workbooks hash checksum is same, related issue #1732

Bug Fixes

  • Add check for MID and MIDB formula functions num_chars arguments, prevent panic on specifying a negative number, resolve issue #1647
  • Fix empty calculate result with numeric arguments in LEN, LOWER, PROPER, REPT, UPPER, and IF formula functions
  • Fix calculate formula functions CHITEST and MMULT panic in some cases
  • Fix a v2.8.0 regression bug, error on set print area and print titles with built-in special defined name
  • Fix a v2.8.0 regression bug, corrupted workbooks generated by improving compatibility with internally indexed color and MRU colors styles parts
  • Fix a v2.8.0 regression bug, number format code apply result was empty, resolve issue #1658
  • Fix a v2.7.1 regression bug, the bubble is hidden in the bubble or 3D bubble chart
  • Fixed panic on AutoFilter by adding nil pointer guard for local sheet ID, resolve issue #1655
  • Fix corrupted workbooks generated when adding tables in some cases
  • Fix incorrect time number format result, resolve issue #1661
  • Supports getting formula string cell value, resolve issue #1665
  • Fix incorrect table ID generated in the workbook which contains single table cells
  • Fix missing relationship parts in the content types in some cases
  • Upgrade number format parser to fix missing literal tokens in some cases
  • Update built-in zh-cn and zh-tw language number format
  • Fix the incorrect custom number format ID allocated, resolve issue #1677
  • Fix updating a table’s range by removing it and creating it again doesn’t work, resolve issue #1682
  • Fix a potential issue that stream reader temporary files can not be clear, resolve issue #1680
  • Fix incorrect formula calculation result in some cases, resolve issue #1681
  • Fix concurrency race conditions on get cell value, resolve issue #1687
  • Fix some format missing on get style definition, resolve issue #1708
  • Fix number format scientific notation zero fill issues, resolve issue #1710
  • Fix panic on read workbook with internal row element without r attribute, resolve issue #1723
  • Fix GetCellRichText returns error on getting inline rich text cells
  • Fix invalid shared string table index on set cell value in some cases
  • Fix GetConditionalFormats panic on get conditional format without above average rules, resolve issue #1745
  • Fix incorrect adjust merged cells on remove rows, resolve issue #1749
  • Fix the SetConditionalFormat function creates incorrect multiple conditional formats rules priority, resolve issue #1770
  • Fix the GetConditionalFormats function doesn’t return gradient data bar rule, resolve issue #1769
  • Fix the GetStyle or GetConditionalStyle function to returns incorrect DecimalPlaces field value, resolve issue #1777
  • Fix the CalcCellValue function does not return raw value when enable RawCellValue, resolve issue #1803


  • Improves performance for adding and removing pivot table and images
  • Reduce memory consumption by trimming the rows and cells, resolve issue #1712


  • The dependencies module has been updated
  • Unit tests and godoc updated
  • Documentation website with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated

Thank you

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

  • fnickels (Francis Nickels III)
  • m12r (Matthias Endler)
  • Abdelaziz-Ouhammou
  • Juneezee (Eng Zer Jun)
  • yicixin (壹次心)
  • TeeRenJing (rjtee)
  • phperic (magicrabbit)
  • kjushka (Anton Petrov)
  • krstak (Marko Krstic)
  • lpxxn (Nick)
  • ByteFlyCoding
  • yangliyl (Yang Li)
  • 15535382838
  • TajangSec (Tajang)
  • lujin1 (lujin)
  • parkoo (Tian)
  • ZhangXiao1024 (ZX)
  • zcgly
  • bramvbilsen (Bram Vanbilsen)
  • user65536
  • tianaiyouqing (天爱有情)
  • cuishuang (cui fliter)
  • CooolNv (Xuesong)
  • yuegu520
  • oneweek20169902 (li)
  • 3zmx
  • 327674413
  • melf-xyzh (MELF晓宇)
  • L4nn15ter
  • rememberher (Jerry)
  • ooooooobh (cherry)
  • xxxwang1983
  • funa12
  • coolbit
  • taitaking (zhukewen)
  • kewenof
  • ivekkairi (Vivek Kairi)
  • edwardfward (Ed)

Thanks for all your hard work. I use Excelize in production and it’s excellent.


I just finished using Excelize for a pro-bono project and it worked GREAT (save for one small issue I had, which I fixed for my own needs, and submitted a draft PR in hopes it could help others with the same issue.)

Thank you for such wonderful software!


1 Like

Nice job and excellent library!

1 Like

What is your rationale behind breaking changes in a Patch-Revision bump. Shouldn’t breaking changes like this at least varant a minor version increase according to SemVer ? So 2.9.0 instead of 2.8.1 ?

I like excelize - it’s a great library.

1 Like

Really great library. I hat used in production application.it is really fast too.

Please share more sample code. It will help developer lot