Excelize is a basic Office Excel document library written in Go language. It is based on ECMA-376, ISO/IEC 29500 international standard. You can use it to read and write spreadsheet documents created with Microsoft Excel™ 2007 and above. Supports multiple document formats such as XLAM/XLSM/XLSX/XLTM/XLTX, is highly compatible with documents with styles, images (tables), Pivottables, slicers and other complex components, and provides streaming read and write APIS for working with workbooks containing large amounts of data. It can be applied to various report platforms, cloud computing, edge computing and other systems. He was selected as 2020 Gopher China-Go Star Open Source Project (GSP) and 2018 Gitee Most Valuable Project of Open Source China Code Cloud.

Open source code

On April 11, 2022, the community officially released version 2.6.0, which contains a number of new features, bug fixes, and compatibility improvements. Below is a summary of the updates. The most significant changes in this release include:

Compatibility Tips

  • Rename the exported constantNameSpaceDublinCoreMetadataIntiativeNameSpaceDublinCoreMetadataInitiativeTo fix spelling mistakes
  • Rename the exported variableErrUnsupportEncryptMechanismErrUnsupportedEncryptMechanism
  • Rename the exported variableErrDataValidationFormulaLenthErrDataValidationFormulaLength
  • Rename the exported variableErrDefinedNameduplicateErrDefinedNameDuplicate
  • Remove the derived variableXMLHeaderByte
  • Removed set data data validation list functionSetSqrefDropListThe second parameter toisCurrentSheetAnd the exception return value
  • Removes export fields from row iteratorsTotalRows

New features

  • ProtectSheetAdded support for protecting worksheets using specified algorithms, including XOR, MD4, MD5, SHA1, SHA256, SHA384, and SHA512
  • UnprotectSheetSupport for password verification when removing worksheet protection by specifying a second optional parameter
  • 71 new 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
  • Added checking for file extensions when saving or saving as a workbook
  • Support to set workbook view mode and show/hide ruler
  • The dependency library NFP (Number Format Parser) was introduced to add support for custom time, date, and text-type number formats, To contain 19 languages (Afrikaans, Bengali, Chinese, English, French, German, Austria, Irish, Italian, Russian, Spanish, Thai, Tibetan, Turkish, welsh, wolof, Xhosa, yi and Zulu) in local names and 12 hours format of digital expression parsing, Related issues #660, #764, #1093, #1112 and #1133
  • The new API:SetWorkbookPrOptionsGetWorkbookPrOptionsSupports setting and getting workbooksFilterPrivacyCodeNameProperty to remove restrictions on embedding VBA projects into workbooks in some cases, related issue #1148
  • The formula calculation engine supports calculation of formula functions with no arguments after infix operators
  • Supports reading Boolean cell values as text
  • throughAddChartFunction can specify inner diameter of ring graph when adding ring graph, resolve issue #1172
  • Four error information items were exportedErrPasswordLengthInvalid.ErrUnsupportedHashAlgorithm.ErrUnsupportedNumberFormat.ErrWorkbookExtSo that developers can take action based on different types of errors

Improved compatibility

  • Improved compatibility with LibreOffice spreadsheet applications. Fixed issue #1122 where the automatic filter fails when a worksheet name opened in LibreOffice contains Spaces
  • Improve support for alternate content in workbooks and preserve alternate content in workbooks, worksheets, and drawingML
  • Improved compatibility with the print quality DPI setting property in page Settings

The problem to repair

  • Fixed issue #1117 where page layout properties were missing when saved as workbook
  • Fixed an issue where merged cell areas were not updated after modifications to worksheets in some cases
  • Fixed issue #1119 where bold and some other font styles were missing due to style parsing exceptions
  • Fixed document corruption after saving documents in XLAM/XLSM/XLTM/XLTX format in some cases
  • Cell styles support inheriting row/column styles to fix incorrect cell styles that merge cell regions after modifications to worksheets, fix Issue #1129
  • Fixed error in obtaining cell style ID in some cases
  • Fixed bug Mc-117594 – Incorrect definition of built-in number format for number 42
  • Fixed a number accuracy parsing error in some cases
  • SetCellDefaultSupports setting values for non-numeric cells, solves issue #1139
  • Fixed issue #1160 where show or hide TAB properties of worksheet were lost when saving as workbook in some cases
  • Fixed issue #1164 where nested formulas were calculated incorrectly in some cases
  • Fixed inaccurate formula calculation results in some cases and inconsistent formula calculation results on x86 and ARM64 cpus
  • Fixed numerical parsing failure in some cases using scientific notation
  • Fixed issue where chart axis Max/min is 0 and does not work

Performance optimization

  • Improved performance for streaming reads using row iterators, reducing memory overhead by up to 50% and memory garbage collection times by up to 80% when reading spreadsheet documents containing large amounts of data compared to the previous version

other

  • Go Modules depends on module updates
  • Unit tests and documentation updates
  • Updated multi-language documentation site in simplified Chinese, English, French, Russian, Japanese, Korean, Arabic, German and Spanish