Excelize 2.7.0 Released – Go language API for spreadsheet (Excel) documents

Excelize 2.7.0 Released – Go language API for spreadsheet (Excel) documents

·

6 min read

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

  • Upgrade requirements Go language version is 1.16 or later, for migration of deprecation package ioutil

  • Checking and return error for invalid sheet name instead of trim invalid characters

  • The GetCellStyle function no longer return master cell style of the merge cell range

  • Rename 5 exported data types and error constant:

    • Rename PivotTableOption to PivotTableOptions

    • Rename FormatHeaderFooter to HeaderFooterOptions

    • Rename FormatSheetProtection to SheetProtectionOptions

    • Rename SparklineOption to SparklineOptions

    • Rename ErrExistsWorksheet to ErrExistsSheet

  • Remove 54 exported types, get more details from the release page on the official documentation website

  • Change 21 functions signature, get more details from the release page on the official documentation website

    • SetPageLayout

    • GetPageLayout

    • SetPageMargins

    • GetPageMargins

    • GetSheetIndex

    • SetSheetName

    • GetSheetVisible

    • DeleteSheet

    • NewSheet

    • NewConditionalStyle

    • NewStyle

    • AddChart

    • AddChartSheet

    • AddShape

    • AddPicture

    • AddPictureFromBytes

    • AddTable and stream mode AddTable function

    • AutoFilter

    • SetPanes

    • SetConditionalFormat

  • Introduce new function to instead of existing functions:

    • Use SetSheetProps instead of SetSheetPrOptions and SetSheetFormatPr

    • Use GetSheetProps instead of GetSheetPrOptions and GetSheetFormatPr

    • Use SetSheetView instead of SetSheetViewOptions

    • Use GetSheetView instead of GetSheetViewOptions

    • Use SetWorkbookProps instead of SetWorkbookPrOptions

    • Use GetWorkbookProps instead of GetWorkbookPrOptions

    • Use InsertRows instead of InsertRow for support inserting multiple rows at once

    • Use InsertCols instead of InsertCol for support inserting multiple columns at once

  • Add CellTypeFormula, CellTypeInlineString, CellTypeSharedString and remove CellTypeString in CellType enumeration

  • The parameter has been changed for the AddComment function, support create rich-text in comments, related issue #1204

  • Remove internal error log print, an error will be returned when XML deserialize error, add error return value for the GetComments, GetDefaultFont and SetDefaultFont functions

Notable Features

  • Add new functions GetDataValidations and GetConditionalFormats for get data validations and conditional formats, related issue #827

  • Add new functions ProtectWorkbook and UnprotectWorkbook for workbook protection supports

  • Add new function SetSheetCol for set worksheet column cells, related issue #1247

  • Add new function GetColStyle for set column styles, related issue #1293

  • Add new function SetSheetBackgroundFromBytes for set background picture by given image data, related issue #1405

  • Add new export variable IndexedColorMapping

  • Add 20 export types: AutoFilterListOptions, AutoFilterOptions, Chart, ChartAxis, ChartDimension, ChartLegend, ChartLine, ChartMarker, ChartPlotArea, ChartSeries, ChartTitle, ConditionalFormatOptions, PaneOptions, Panes, GraphicOptions, Shape, ShapeColor, ShapeLine, ShapeParagraph and TableOptions

  • New support 2 formula functions: AGGREGATE and SUBTOTAL

  • The Save, Write and WriteTo function now accept saving options, related issue #744

  • The AddChart function support specify if smooth line of the line chart, related issue #1290

  • The AddChart function support set custom line color in the charts, related issue #1345

  • The AddChart function support custom chart axis font style, related issue #320

  • The AddChart function support create 3D line chart

  • The functions SetColWidth, GetColWidth, SetColVisible, GetColVisible, SetColStyle and GetColStyle now support concurrency safe

  • An error will be returned when set the not exist style ID, related issue #1323

  • An error will be returned when setting the stream row without ascending row numbers, to avoid potential mistakes, related issue #1139

  • The stream writer will be apply style in RowOpts for each cell, related issue #1354

  • The stream writer support to set panes, related issue #1047

  • The stream writer support to set inline rich text cell

  • The stream writer support to insert the page break

  • New 7 exported errors: ErrUnprotectWorkbook, ErrUnprotectWorkbookPassword, ErrStreamSetPanes, ErrSheetNameBlank, ErrSheetNameInvalid, ErrSheetNameLength and ErrSheetNameSingleQuote has been added

  • Introduce 5 new export data types: HeaderFooterOptions, PageLayoutMarginsOptions, PageLayoutOptions, SheetPropsOptions, and ViewOptions

  • Support to set summary columns to appear to the right of detail in an outline

  • Support to set and get font color with theme and tint, related issue #1369

  • Support get cell value which contains a date in the ISO 8601 format

  • Support set and get font color with indexed color

  • Support update column style when inserting or deleting columns

  • The workbook Close function now support cleanup stream writer temporary files

  • The AddPicture function now allowing insert SVG format images

Improve the Compatibility

  • Stream writer writes inline string type for string cell value, related issue #1377

  • Skip empty rows when saving the spreadsheet to reduce file size, related issue #1383

Bug Fixes

  • Fix decimal number format round issue with build-in number format, resolve issue #1328, #1368 and #1373

  • Fix apply AM/PM number format issue in some case, resolve issue #1338

  • Fix the panic when delete comments caused by slice bounds out of range, resolve issue #1343

  • Fix the panic when get cell value in some case, resolve issue #1384 and #1415

  • Fix default number format parse issue with a long string of digits, resolve issue #1360

  • Fix creating a sheet with an empty name cause a corrupted file, resolve issue #1361

  • Fix get image content was empty after inserting image

  • Fix generate workbook corruption after insert columns/rows in some case

  • Delete shared formula in calc chain when writing a formula cell, to fix generate workbook corruption in some case

  • Normalize the sheet name to fix behavior regression between 2.6.0 & 2.6.1, resolve issue #1365

  • Fix the formula calculation result issue of the OR function

  • Fix error on inserting columns or rows on the worksheet which contains one cell merged cell range

  • Fix error on getting the range of merged cells on the worksheet which contains one cell merged cell range

  • Fix getting incomplete rich text cell value in some cases

  • Escape XML characters for stream writer to avoid with corrupt file, resolve issue #1391

  • Fix formula function ADDRESS result error with empty worksheet name, resolve issue #1396

  • Fix insert picture problem in some cases, resolve issue #1404

Performance

  • Improve performance for stream writer merging cells, time cost decrease over 90% and reduce memory usage by about 86% at most

  • Improving performance for stream writer SetRow function, reduces memory usage over and speedup about 19%

Miscellaneous

  • The dependencies module has been updated

  • Unit tests and godoc updated

  • Using the specialized name in variables and functions

  • 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:

  • cdenicola (Cooper de Nicola)

  • chenliu1993

  • davidborry

  • patsak (Kostya Privezentsev)

  • dafengge0913

  • Beeb0p (Artem Tarasenko)

  • invzhi

  • zhangzitao (Zitao)

  • jtwatson (Joseph Watson)

  • carbin-gun (charles.deng)

  • harrison3000 (Harrison)

  • strivek (GaoFei)

  • gonghaibinx

  • martinmr (Martin Martinez Rivera)

  • zclark (Zach Clark)

  • March0715 (March)

  • renxiaotu

  • devloppper

  • jianxinhou

  • nesstord

  • Bayzet (Bayzet Tlyupov)

  • guoweikuang (郭伟匡)

  • qinyuguang (Gin)

  • liron-l (Liron Levin)