DEV Community

xuri
xuri

Posted on

Excelize 2.5.0 Released - Go language API for spreadsheets (Excel) files

Excelize 2.5.0 Released - Go language API for spreadsheets (Excel) files

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

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

Top comments (0)