Excelize 2.7.0 Released
Published on January 8, 2023 by xuri
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 GetColStylenow 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)