Excelize 2.7.0 Released - Go language API for spreadsheets (Excel) files
Tags: go, excel, xlsx
Published: 2023-01-08 16:19:00

---
title: Excelize 2.7.0 Released - Go language API for spreadsheets (Excel) files
published: true
description: Excelize is a library written in pure Go and providing a set of functions that allow you to write to and read from XLSX files. 
tags: Go,Excel,Golang,XLSX 
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
published_at: 2023-01-08 16:19 +0000
---

![Go Language Open Source Excel Library Excelize 2.7.0 Released](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0nsg6y1ztc4yixsypqfc.png)

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&trade; 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](https://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](https://github.com/xuri/excelize/releases/tag/v2.7.0). A full list of changes is available in the [changelog](https://github.com/xuri/excelize/compare/v2.6.1...v2.7.0).

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](https://xuri.me/excelize) 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)