Excelize

Latest version: v0.0.3

Safety actively analyzes 723166 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 4

2.6.0

We are pleased to announce the release of version 2.6.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.6.0). A full list of changes is available in the [changelog](https://github.com/xuri/excelize/compare/v2.5.0...v2.6.0).

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

Breaking Change

* Rename exported constants `NameSpaceDublinCoreMetadataIntiative` to `NameSpaceDublinCoreMetadataInitiative` for typo fix
* Rename exported variable `ErrUnsupportEncryptMechanism` to `ErrUnsupportedEncryptMechanism`
* Rename exported variable `ErrDataValidationFormulaLenth` to `ErrDataValidationFormulaLength`
* Rename exported variable `ErrDefinedNameduplicate` to `ErrDefinedNameDuplicate`
* Remove exported variable `XMLHeaderByte`
* Remove second useless parameter `isCurrentSheet` and error returns of the function `SetSqrefDropList`
* Remove `TotalRows` of row iterator

Notable Features

* `ProtectSheet` now support protect sheet with specify algorithm: XOR, MD4, MD5, SHA1, SHA256, SHA384, and SHA512
* `UnprotectSheet` now support specified the second optional password parameter to remove sheet protection with password verification
* New support 71 formula functions: AVERAGEIFS, BETADIST, BETA.DIST, BETAINV, BETA.INV, BINOMDIST, BINOM.DIST, BINOM.DIST.RANGE, BINOM.INV, CHIINV, CHITEST, CHISQ.DIST, CHISQ.DIST.RT, CHISQ.INV, CHISQ.INV.RT, CHISQ.TEST, CONFIDENCE.T, CORREL, COVAR, COVARIANCE.P, CRITBINOM, ERROR.TYPE, EXPON.DIST, EXPONDIST, F.DIST, F.DIST.RT, FDIST, F.INV, F.INV.RT, FINV, FORMULATEXT, F.TEST, FTEST, GAMMA.DIST, GAMMADIST, GAMMA.INV, GAMMAINV, GAMMALN.PRECISE, GAUSS, HOUR, HYPGEOM.DIST, HYPGEOMDIST, INDIRECT, LOGINV, LOGNORM.DIST, LOGNORMDIST, LOGNORM.INV, MODE, MODE.MULT, MODE.SNGL, NEGBINOM.DIST, NEGBINOMDIST, PHI, SECOND, SERIESSUM, SUMIFS, SUMPRODUCT, SUMX2MY2, SUMX2PY2, SUMXMY2, T.DIST, T.DIST.2T, T.DIST.RT, TDIST, TIMEVALUE, T.INV, T.INV.2T, TINV, T.TEST, TTEST, TYPE
* Check file extension on save the workbook
* Support workbook views mode and ruler display settings
* Improve number format support, introduced NFP (number format parser) dependencies module for custom dates and times number format and text place holder support, include local month name and AM/PM format in 19 languages (Afrikaans, Bangla, Chinese, English, French, German, Austria, Irish, Italian, Russian, Spanish, Thai, Tibetan, Turkish, Welsh, Wolof, Xhosa, Yi and Zulu) support for number format, related issues 660, 764, 1093, 1112, 1133
* New exported functions `SetWorkbookPrOptions` and `GetWorkbookPrOptions` to support setting and getting the `FilterPrivacy` and `CodeName` properties of the workbook, resolve limitations when adding VBA project to the workbook, related issue 1148
* Formula engine now support calculation with the none parameter formula function after infix operator notation
* Support to read boolean data type cell value
* Support set hole size when create the doughnut chart by `AddChart` function, resolve issue 1172
* Export 4 errors `ErrPasswordLengthInvalid`, `ErrUnsupportedHashAlgorithm`, `ErrUnsupportedNumberFormat`, `ErrWorkbookExt` so users can act differently on the different type of errors

Improve the Compatibility

* Improve compatibility with LibreOffice, fixed the issue auto filter doesn't work on LibreOffice if the sheet name has spaces, resolve issue 1122
* Improve the compatibility with alternate content, support preserve alternate content in the workbook, worksheet, and drawingML
* Improve the compatibility with page setup DPI fields

Bug Fixes

* Fix missing page setup of worksheet after re-saving the spreadsheet, resolve issue 1117
* Fix merged cells doesn't updated after opertaion in some cases
* Fix style parsing issue, which causes bold and other style missing, resolve issue 1119
* Fix file corrupted when save as in XLAM / XLSM / XLTM / XLTX extension in some case
* Correct cells style in merge range, make cell support inheritance columns/rows style, resolve issue 1129
* Fix incorrect style ID returned on getting cell style in some cases
* Fix incorrect build-in number format: 42
* Fixed parsing decimal precision issue in some case
* `SetCellDefault` support non-numeric value, resolve issue 1139
* Fixed show sheet tabs setting was missing on save as spreadsheet in some cases, resolve issue 1160
* Fix nested formula calculation result error, resolve issue 1164
* Fix a part of formula function calculation result precision issue and inconsistent result precision of formula calculation under x86 and arm64 processor (CPU) architecture
* This fix scientific notation parsing issue in some case
* Fix the issue that the chart axis maximum and minimum didn't work when the value is 0

Performance

* Improve streaming reading performance, based on the previously released version, reduce memory usage by about 50% at most for reading large data spreadsheet, and reduce 80% GC times for the row's iterator

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

2.5.0

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:

Breaking Change

* 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, based on the previously released version time cost decrease over 90%
* Improve streaming reading performance, unzip shared string table to system temporary file when large inner XML, based on the previously released version, memory usage decreased about 60% at most, 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

2.4.1

We are pleased to announce the release of version 2.4.1. 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.4.1). A full list of changes is available in the [changelog](https://github.com/xuri/excelize/compare/v2.4.0...v2.4.1).

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

Breaking Change

Change Go Modules import path to `github.com/xuri/excelize/v2`

Notable Features

* Support set column width in streaming mode, related issue [625](https://github.com/xuri/excelize/issues/625)
* Support merge cell in streaming mode, related issue [826](https://github.com/xuri/excelize/issues/826)
* New support 2 formula functions: BESSELK, BESSELY
* The formula calculation engine now supports defined name references
* Add disable option for chart xAxis and yAxis
* The function [`AddPivotTable`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.AddPivotTable) support reference source data range by defined name, relate issue [856](https://github.com/xuri/excelize/issues/856)
* The following function now is concurrency safety, relate issue 861
* [`AddPicture`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.AddPicture) and [`GetPicture`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.GetPicture) concurrency insert or get the picture from the worksheet
* [`Rows`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.Rows) and [`Cols`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.Cols) concurrency iterate rows and columns
* [`SetSheetRow`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.SetSheetRow) concurrency set cells for a row in the worksheet
* [`SetCellStyle`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.SetCellStyle) concurrency set cell style
* [`NewStyle`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.NewStyle) concurrency create the style
* Export 24 function's error message

Improve the Compatibility

* Improves compatibility for default XML namespace attributes, fix generated corrupted file in some case
* Improves compatibility with non-standard page setup attributes, fix open spreadsheet failed in some case
* Add count attribute in shared strings table
* Remove UTC timezone requirement when setting cell value with time, related issue [409](https://github.com/xuri/excelize/issues/409)
* Improves compatibility with XML control character in the escape literal string
* Rename exported field `File.XLSX` to `File.Pkg`
* Change the sheet names are not case sensitive for `NewSheet`, `GetSheetIndex`, `DeleteSheet`, resolve issue [873](https://github.com/xuri/excelize/issues/873)
* Fix missing pivot attribute of conditional formatting, resolve issue [883](https://github.com/xuri/excelize/issues/883)
* Improvement compatibility with invalid first-page number attribute in the page layout
* Add maximum character limit and fix missing preserve character for [`SetCellRichText`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.SetCellRichText)

Bug Fixes

* Fix 12/24 hours time format parsing error, resolve issue [823](https://github.com/xuri/excelize/issues/823) and [#841](https://github.com/xuri/excelize/issues/841)
* Fix can't get comments by [`GetComments`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.GetComments) in some case, resolve issue [825](https://github.com/xuri/excelize/issues/825)
* Fix issue when get and add comments on multi authors, resolve issue [829](https://github.com/xuri/excelize/issues/829) and [#830](https://github.com/xuri/excelize/issues/830)
* Fix invalid file path and duplicate namespace when re-creating worksheet, resolve issue [834](https://github.com/xuri/excelize/issues/834)
* Fix set outline attributes not work when the value of `showOutlineSymbols`, `summaryBelow` and `summaryRight` attributes are `false`
* Avoid empty rows in the tail of the worksheet by [`GetRows`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.GetRows), resolve issue [842](https://github.com/xuri/excelize/issues/842)
* Fix missing formula cell when getting rows value, resolve issue [855](https://github.com/xuri/excelize/issues/855)
* Fix comparison fails inside and outside IF function, resolve issue [858](https://github.com/xuri/excelize/issues/858)
* Fix [`GetRowHeight`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.GetRowHeight) actually get the height of the next row
* Fix incorrect scope when getting and delete the defined name, resolve issue [879](https://github.com/xuri/excelize/issues/879)
* Attribute `LocalSheetID` in the defined name should be equal to `SheetIndex` instead of `SheetID`
* Fix missing set each cell's styles when set columns style, resolve issue [467](https://github.com/xuri/excelize/issues/467)
* Prevent panic when an incorrect range is provided as `PivotTableRange` on creating a pivot table
* Fix reading decimals precision issue, resolve issue [848](https://github.com/xuri/excelize/issues/848) and [#852](https://github.com/xuri/excelize/issues/852)
* Escape XML character in the drop list, avoid corrupted file generated, resolve issue [971](https://github.com/xuri/excelize/issues/971)
* Fix incorrect character count limit in the drop list, resolve issue [972](https://github.com/xuri/excelize/issues/972)
* Fix high CPU usage on reading cell value with number format caused by Excel time parse issue in some case, resolve issue [974](https://github.com/xuri/excelize/issues/974)
* Fix month parsing error in custom number format in some cases

Performance

* Reduce memory usage [`Save`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.Save) and [`SaveAs`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.1#File.SaveAs) about 19% at most based on the previously released version

Miscellaneous

* Fix code security issue CWE-190 and CWE-681
* The dependencies module has been updated
* Unit tests and godoc updated
* Use GitHub Action for unit testing
* [Documentation website](https://xuri.me/excelize) with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated

2.4.0

We are pleased to announce the release of version 2.4.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.4.0). A full list of changes is available in the [changelog](https://github.com/xuri/excelize/compare/v2.3.2...v2.4.0).

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

Breaking Change

Upgrade requirements Go language version is 1.15 or later.

Notable Features

* New API [`GetCellRichText`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.GetCellRichText) support to get the rich text of cell by given worksheet
* Now support to set and get: print scaling, print black and white, and specified the first printed page number of the worksheet by [`SetPageLayout`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.SetPageLayout) and [`GetPageLayout`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.GetPageLayout)
* Now support to change and get tab color of the worksheet by [`SetSheetPrOptions`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.SetSheetPrOptions) and [`GetSheetPrOptions`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.GetSheetPrOptions)
* [`SetCellHyperlink`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.SetCellHyperlink) now support to set hyperlink display & tooltips text, related issue 790
* Support `ShowError` option when adding the pivot table
* Support setting formula for cell in streaming API, related issue 625
* The formula calculation engine now supports not equal operator
* The nested formula function now supports cell references as arguments
* Support to specifies that each data marker in the series has a different color
* New support 152 formula functions: ATAN, AVERAGE, AVERAGEA, BESSELI, BESSELJ, BIN2DEC, BIN2HEX, BIN2OCT, BITAND, BITLSHIFT, BITOR, BITRSHIFT, BITXOR, CHAR, CHOOSE, CLEAN, CODE, COLUMN, COLUMNS, COMPLEX, CONCAT, CONCATENATE, COUNT, COUNTBLANK, CUMIPMT, CUMPRINC, DATE, DATEDIF, DB, DDB, DEC2BIN, DEC2HEX, DEC2OCT, DOLLARDE, DOLLARFR, EFFECT, ENCODEURL, EXACT, FALSE, FIND, FINDB, FISHER, FISHERINV, FIXED, FV, FVSCHEDULE, GAMMA, GAMMALN, HARMEAN, HEX2BIN, HEX2DEC, HEX2OCT, HLOOKUP, IF, IFERROR, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN, IPMT, IRR, ISTEXT, ISPMT, KURT, LARGE, LEFT, LEFTB, LEN, LENB, LOOKUP, LOWER, MAX, MID, MIDB, MIN, MINA, MIRR, N, NOMINAL, NORM.DIST, NORMDIST, NORM.INV, NORMINV, NORM.S.DIST, NORMSDIST, NORM.S.INV, NORMSINV, NOT, NOW, NPER, NPV, OCT2BIN, OCT2DEC, OCT2HEX, PDURATION, PERCENTILE.INC, PERCENTILE, PERMUT, PERMUTATIONA, PMT, POISSON.DIST, POISSON, PPMT, PROPER, QUARTILE, QUARTILE.INC, REPLACE, REPLACEB, REPT, RIGHT, RIGHTB, ROMAN, ROW, ROWS, SHEET, SKEW, SMALL, STDEV, STDEV.S, STDEVA, SUBSTITUTE, T, TODAY, TRIM, TRUE, UNICHAR, UNICODE, UPPER, VAR.P, VARP, VLOOKUP

Improve the Compatibility

* Now set the empty string for the cell when [`SetCellValue`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.SetCellValue) with `nil`, resolve issue 756
* Remove useless internal XML `omitempty` tag on style pattern fill color
* Fix compatibility issue of Google Sheets offline browser extension 769
* Use absolute reference in the auto filters defined name to make it compatible with OpenOffice, resolve issue 776
* Handle end element event in the worksheet row/column iterator XML SAX parser, faster row/column iterate and fix inconsistent read rows count of the file in some case
* Improves compatibility for worksheet relative XML path
* Avoid duplicate rich text string items 787
* Improves compatibility for absolute XML path, Windows-style directory separator, and inline namespace

Bug Fixes

* Fix round precision issue 764
* Add missing fields and change the order of the fields of workbook fields, prevent generate the corrupted file in some case, resolve issue 766
* Fix hyperbolic cotangent calculation incorrect
* Correct adjust calculation chain in duplicate rows, resolve issue 774
* Correct adjust defined name in the workbook when deleting a worksheet, resolve issue 775
* Fix cyclomatic complexity issue of internal function `newFills` and `parseToken`
* Fix custom row height check issue
* Fix unmerge all cells cause corrupted file, resolve issue 782
* Fix part of auto filter rules missing after saved
* Fix [`UpdateLinkedValue`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.UpdateLinkedValue) which returns an error when has chart sheet or dialog sheet
* Fix incorrect default column from [`GetColWidth`](https://pkg.go.dev/github.com/xuri/excelize/v2v2.4.0#File.GetColWidth) in some case
* Fix can't add timelines and slicers for a pivot table in a generated spreadsheet, resolve issue 804
* Fix incorrect SetDefinedName's `localSheetId` attribute to use `sheetIndex`
* Fix missing cell locked or hidden protection in some case, resolve issue 809
* Fix streaming data writer result missing after call normal API, resolve issue 813
* Fix the negative values series missing chart color issue

Performance

* Faster numeric precision process

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
* Welcome join [the Slack channel](https://join.slack.com/t/xuri/shared_invite/zt-eriqdkeo-wV04zcCdBiiZveFgY86Wzw) or [Telegram Group](https://t.me/excelize) to meet other members of our community

2.3.2

We are pleased to announce the release of version 2.3.2. 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.3.2). A full list of changes is available in the [changelog](https://github.com/xuri/excelize/compare/v2.3.1...v2.3.2).

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

Notable Features

* The function `AddPivotTable` now support none-column and multi-data fields, relate issue 710
* The function `GetCellValue` support custom date-time number format, relate issue 703
* The function `CalcCellValue` now support new formula function `AND`, `CLEAN`, `TRIM`, `LOWER`, `PROPER`, `UPPER` and `OR`, relate issue 701 and 747
* The range of data validation now supports float decimal, relate issue 739
* The function `AddChart` now support to set marker type and custom line width, relate issue 549 and 657

Improve the Compatibility

* Improve over 6 series line chart compatibility with KingSoft WPS™, resolve 627
* Avoid creating duplicate inner style in some case
* Parse document core part (workbook) dynamically
* Support single line with repeated row element in the worksheet data, resolve 732

Bug Fixes

* Prevent formula lexer panic on retrieving the top token type on some invalid formula, resolve issue 711
* Fix missing worksheet when renaming with same names, resolve issue 713
* Fix wrong worksheet index returned by `NewSheet` in some cases, resolve issue 714
* Fix panic on formatted value with no built-in number format ID, resolve issue 715 and 741
* Rounding numeric with precision for formula calculation, resolve issue 727
* Fix row duplicate mechanism 729
* Fix incorrect active tab after delete worksheet in some cases, resolve issue 735
* Fix `AddPicture` autofit failure with multi merged cells, resolve issue 748

Performance

* Stream writing memory usage decrease about 60%, relate issue 659
* Optimize memory allocation `workSheetWriter`, relate issue 722
* Improve `AddPicture` performance, relate issue 706

Miscellaneous

* Unit tests and godoc updated
* [Documentation website](https://xuri.me/excelize) with multilingual: English, French, Russian, Chinese, Japanese, and Korean, which has been updated, 3 new language: Arabic, German and Spanish language version docs published
* Welcome join [the Slack channel](https://join.slack.com/t/xuri/shared_invite/zt-eriqdkeo-wV04zcCdBiiZveFgY86Wzw) or [Telegram Group](https://t.me/excelize) to meet other members of our community

2.3.1

We are pleased to announce the release of version 2.3.1. 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.3.1). A full list of changes is available in the [changelog](https://github.com/xuri/excelize/compare/v2.3.0...v2.3.1).

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

Notable Features

* Support open spreadsheet with password protection by ECMA-376 document standard encryption, relate issue 199
* Add checking and limits for the worksheet
* Extend pivot table functionality: support set the header, style, and table options for the pivot table
* Security vulnerabilities and patches

Improve the Compatibility

* Compatible with Go 1.15, fix unit test failed on Windows and potential race condition, relate issue 689
* Default row height compatibility with Apache OpenOffice and Kingsoft WPS™
* Improve compatibility for the phonetic hint and sheet tab color

Bug Fixes

* Fix `RemoveRow` slice bounds out of range cause panic in some case, resolve 686
* Fix stream writer generated corrupted files issue
* Fix the scale for add picture not work, resolve 691

Miscellaneous

* Unit tests update and typo fixed
* [Documentation website](https://xuri.me/excelize) with multilingual: English, French, Russian, Chinese, Japanese, and Korean, which has been updated
* Welcome join [the Slack channel](https://join.slack.com/t/xuri/shared_invite/zt-eriqdkeo-wV04zcCdBiiZveFgY86Wzw) to meet other members of our community

Page 2 of 4

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.