Excelize 2.5.0 Released - Go language API for spreadsheets (Excel) files
Tags: go, excel, xlsx
Published: 2022-01-02 16:38:44

---
title: Excelize 2.5.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: 
---

![Excelize 2.5.0 Released - Go language API for spreadsheets (Excel) files](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fyhamsgpj5bzxf34owxz.png)

Excelize is a library written in pure Go providing a set of functions that allow you to write to and read from XLSX / XLSM / XLTM files. Supports reading and writing spreadsheet documents generated by Microsoft Excel&tradde; 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.5.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.5.0). A full list of changes is available in the [changelog](https://github.com/xuri/excelize/compare/v2.4.1...v2.5.0).

Release Notes
------------
The most notable changes in this release are:

### Compatibility

* Close spreadsheet and row's iterator required, the user should be close the stream after using the row's iterator, and close the spreadsheet after opening an existing spreadsheet
* Change `ReadZipReader` as an implementation of the `File`, extract spreadsheet with given options, and support extract in memory or touching the filesystem
* Remove unnecessary exported variable `XMLHeader`, we can using `encoding/xml` package's `xml.Header` instead of it
* Remove unused exported error variable `ErrToExcelTime`

### Notable Features

* New API: `SetRowStyle` support for set style for the rows, related issue #990
* New API: `GetCellType` support for get the cell's data type, related issue #417 and #520
* New API: `SetAppProps` and `GetAppProps` support to set and get document application properites, related issue #1095
* `GetCellValue`, `GetRows`, `GetCols`, `Rows` and `Cols` support to specify read cell with raw value, related issue #621
* New support 95 formula functions: ACCRINT, ACCRINTM, ADDRESS, AMORDEGRC, AMORLINC, AVEDEV, AVERAGEIF, CHIDIST, CONFIDENCE, CONFIDENCE.NORM, COUNTIF, COUNTIFS, COUPDAYBS, COUPDAYS, COUPDAYSNC, COUPNCD, COUPNUM, COUPPCD, DATEVALUE, DAY, DAYS, DELTA, DEVSQ, DISC, DURATION, ERF, ERF.PRECISE, ERFC, ERFC.PRECISE, GEOMEAN, GESTEP, IFNA, IFS, INDEX, INTRATE, ISFORMULA, ISLOGICAL, ISREF, ISOWEEKNUM, MATCH, MAXA, MAXIFS, MDURATION, MINIFS, MINUTE, MONTH, ODDFPRICE, PERCENTILE.EXC, PERCENTRANK.EXC, PERCENTRANK.INC, PERCENTRANK, PRICE, PRICEDISC, PRICEMAT, PV, QUARTILE.EXC, RANK, RANK.EQ, RATE, RECEIVED, RRI, SHEETS, SLN, STANDARDIZE, STDEV.P, STDEVP, SWITCH, SYD, TBILLEQ, TBILLPRICE, TBILLYIELD, TEXTJOIN, TIME, TRANSPOSE, TRIMMEAN, VALUE, VAR, VAR.S, VARA, VARPA, VDB, WEEKDAY, WEIBULL, WEIBULL.DIST, XIRR, XLOOKUP, XNPV, XOR, YEAR, YEARFRAC, YIELD, YIELDDISC, YIELDMAT, Z.TEST, ZTEST, related issue #1002
* Formula calculation engine support nested calc for `IF` formula, related issue #987
* Formula calculation engine support get shared formula, related issue #844
* Formula calculation engine support text comparison, related issue #998
* Support specify the formula in the data validation range, related issue #1012
* Support specified unzip size limit on open file options, avoid zip bombs vulnerability attack
* `SetCellFormula` now support set the shared formula
* `UpdateLinkedValue` will skip macro sheet, related issue #1014
* Fix `AddPicture` created duplicate image in some cases, caused by incorrect internal relationships ID calculation, related issue #1017
* `AddShape` support set line width of add the shape, related issue #262
* New options `UnzipXMLSizeLimit` have been added, support to specifies the memory limit on unzipping worksheet and shared string table in bytes
* An error will be returned if given an invalid custom number format when creating a new style, related issue #1028
* Now support set row style in the stream writer
* Stream writer will create a time number format for time type cells, related issue #1107
* Now support specify compact and outline for the pivot table, related issue #1029
* Support get current rows/columns and total rows/columns in the stream reader, related PR #1054
* Now support time zone location when set cell value, related issue #1069
* Export 7 errors so users can act differently on different type of errors

### Improve the Compatibility

* Improve compatibility with row element with `r="0"` attribute
* Preserve XML control character
* Improve the compatibility of style settings with Apple Numbers, related issue #1059
* Support multi-byte language on set header footer, related issue #1061
* Preserve horizontal tab character when set the cell value, related issue #1108

### Bug Fixes

* Fix the data validation deletion failed, resolve issue #979
* Fix set data validation drop list failed in some cases, resolve issue #986
* Fix formula calculation engine `LOOKUP` doesn't handle array form correctly, resolve issue #994
* Fix formula calculation engine `LOOKUP` can only find exact match, resolve issue #997
* Fix formula percentages calculated incorrectly, resolve issue #993
* Fix panic caused by incorrect cell read on some case
* Fix conditional format bottom N not working
* Fix time parse accuracy issue, resolve issue #1026 and #1030
* Fix build-in scientific number format failed, resolve issue #1027
* Fix small float parse error in some case, resolve issue #1031
* Fix worksheet deletion failed in some case
* Fix build-in time number format parse error, resolve issue #1060
* Fix `NewStyle` returned incorrect style ID in some case
* Fix merged cell range error after row/column insert/deletion in some corner case

### Performance

* Merge cell time cost speed up, time cost decrease over 90%
* Improve streaming reading performance, unzip shared string table to system temporary file when large inner XML, memory usage decreased about 60%, related issue #1096
* Worksheet list read speed up
* Merge column styles to reduce spreadsheet size, resolve issue #1057

### Miscellaneous

* The dependencies module has been updated
* Unit tests and godoc updated
* [Documentation website](https://xuri.me/excelize) with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated