Excelize 2.5.0 Released – Go language API for spreadsheet (Excel) document

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 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.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. A full list of changes is available in the changelog.

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 with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated
2 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.