qax-os/excelize
 Watch   
 Star   
 Fork   
2024-10-10 22:44:38
excelize

v2.9.0

We are pleased to announce the release of version 2.9.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:

Breaking Change

  • Change the data type for the ConditionalFormatOptions structure field Format as a pointer, resolve issue #1867

Notable Features

  • Add new functions DeleteSlicer and GetSlicers, related issue #810
  • Add new function MoveSheet to support changing sheet order in the workbook, related issue #1076
  • Add new AutoFitIgnoreAspect field in the GraphicOptions data type support for fill the cell with the image and ignore its aspect ratio
  • Add new TickLabelPosition field in the ChartAxis data type support for set label position of the chart
  • Add new fields ShowAll, InsertBlankRow and NumFmt field in the PivotTableField data type
  • Add new fields ClassicLayout, FieldPrintTitles and ItemPrintTitles in the PivotTableOptions data type
  • Introduce 2 new exported enumeration type ChartTickLabelPositionType and PictureInsertType
  • Introduce new exported ChartLineUnset enumeration value
  • Introduce 4 constants ExtURIDataField, ExtURIPivotField, ExtURIPivotFilter and ExtURIPivotHierarchy
  • Introduce new exported error variable ErrPivotTableClassicLayout
  • The MergeCell function support clear slave cells value when merging cells
  • The AddDataValidation, DeleteDataValidation and GetCellStyle functions support concurrency safe, related issues #1825
  • The GetDataValidations function support get data validations which storage in the extension lists, related issue #1835
  • The SetSheetName function support case sensitivity, related issue #1856
  • The GetPictureCells and GetPictures functions support for get the cell images inserted by IMAGE formula function and absolute paths for pictures
  • The SetCellHyperLink function support remove hyperlink by None linkType, related issue #1940
  • The AddChart function support create combo chart with same types, related issue #1940
  • The AddChart function support set line type of scatter chart
  • An error will be return if column header cell is empty in pivot table data range when create pivot table by AddPivotTable function, related issue #1945
  • Add support for applying number format expression with language/location tags and ID
  • Add support for apply number format for time and duration cell value, related issue #2004
  • New support formula function: DOLLAR

Improve the Compatibility

  • Improve compatibility for apply number format, support apply number format with alignment, resolve issue #1847
  • Improvement compatibility for the workbook internal part with a spreadsheet namespace prefix, resolve issue #1886
  • Improve compatibility for the workbook internal media files with absolute path, resolve issue #1888

Bug Fixes

  • Fix a v2.8.1 regression bug, auto filter doesn't work in the LibreOffice, resolve issue #1830
  • Fix a v2.8.1 regression bug, support to adjust data validation with multiple cell range, resolve issue #1831
  • Fix a v2.8.1 regression bug, error on duplicate rows, if conditional formatting or data validation has multiple cell range reference
  • Fix a v2.8.1 regression bug, incorrect cell value written if save multiple times, resolve issue #1906
  • Fix a v2.8.1 regression bug, spark lines duplicate when creating spark lines on multiple sheets, resolve issue #1910
  • The CalcCellValue function support calculate formula functions ISNUMBER, OR and FIND with matrix arguments, resolve issue #1819
  • Fix the CalcCellValue function calculation result round issue, resolve issue #1851
  • Fix the CalcCellValue function returns incorrect result of formula functions XIRR and XNPV, resolve issue #1989
  • Fix the RemoveCol returns error when deleting columns, resolve issue #1829
  • Fix incorrect result data type of the DATE formula function, resolve issue #1833
  • Fix panic on read workbook with internal row element without r attribute
  • Fix parentheses in formulas get cut out when inserting new columns or rows, resolve issue #1861
  • Fix incorrect data validation escape result in some cases
  • Fix some character can't be displayed in stream writer, resolve issue #1865
  • Saving workbook with sorted internal part path to keep same hash of identical files and fix incorrect MIME type, resolve issue #1889
  • Fix the AddChart function set axis format doesn't work in combo chart, resolve issue #1921
  • Fix the AddChart function set incorrect primary axis titles position
  • Fix the AddChart function set secondary vertical axis title is not displayed, resolve issue #1926
  • Fix the AddChart function set line type of line chart does not work
  • Fix the GetPivotTables function returns incorrect data range, resolve issue #1937
  • Fix the GetStyle function panic when theme without sysClr, resolve issue #1963
  • Fix the GetCellRichText function returns error when read cell without SST index, resolve issue #1999
  • Fix the SetSheetVisible function panic on none views sheet, resolve issue #1969
  • Fix percent sign missing in formatted result for zero numeric cell value, resolve issue #1942
  • Fix missing horizontal axis in scatter chart with negative values
  • Fix missing shape macro missing after adjusted drawing object, resolve issue #1957
  • Fix missing conditional formatting after remove column in some cases, resolve issue #1968
  • Fix read cell value with decimal value round issue, resolve issue #1979
  • Support to set cell value with an IEEE 754 "not-a-number" value or infinity, resolve issue #119

Performance

  • Fix v2.8.0 regression speed slowdown and memory usage increase issue
  • Reduce memory usage for the GetRows function, related issue #1874
  • Optimize ColumnNumberToName function performance, reduce about 50% memory usage and 50% time cost

Miscellaneous

  • The dependencies module has been updated
  • Unit tests and godoc updated
  • Documentation website with multilingual: Arabic, German, English, Spanish, French, Japanese, Korean, Portuguese, Russian, Chinese Simplified and Chinese Traditional, which has been updated. Added Italian version of the document

Thank you

Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:

  • @mirgong (helloWorld)
  • @YueChenXu-Kimi (岳晨旭)
  • @JackMin1314 (陈王)
  • @paolobarbolini (Paolo Barbolini)
  • @iEvan-lhr (Evan lu)
  • @yetyear (yeahyear)
  • @ha5ky (hu5ky)
  • @lizhichao (vic)
  • @realzuojianxiang (realzuojianxiang)
  • @msackman (Matthew Sackman)
  • @yyle88 (yangyile-yyle88)
  • @yunkeweb (yunkeweb)
  • @iraj720 (Nima)
  • @jianxinhou
  • @barlevd
  • @18409615759 (nna)
  • @qijinkui (xiaokui)
  • @user1121114685 (联盟少侠)
  • @wangsongyan
  • @vsemichev (Vovka Morkovka)
  • @zhayt (Aybek)
  • @ShowerBandV (ShowerBandV)
  • @imink (Patrick Wang)
  • @samkeke (wxy)
  • @pjh591029530
  • @zhangyimingdatiancai
  • @wanghaochen2024
  • @centurion-hub
  • @peng (Zhang Zhipeng)
  • @slashdotdash (Ben Smith)
  • @ArcholSevier
  • @liuwangchao
  • @Zncl2222 (Jian Yu, Chen)
2024-02-26 02:22:51
excelize

v2.8.1

We are pleased to announce the release of version 2.8.1. 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:

Breaking Change

  • Upgrade requirements Go language version is 1.18 or later, for upgrade of dependency package golang.org/x/net
  • Change the data type for the HeaderFooterOptions structure fields AlignWithMargins and ScaleWithDoc as a pointer, resolve issue #1645
  • Remove unused exported data structure ShapeColor

Notable Features

  • Add new exported function SetCellUint, related issue #1681
  • Add new exported function GetPictureCells for get all picture cells, related issue #1218
  • Add new exported function GetConditionalStyle for get the conditional format style definition, related issue #1690
  • Add new exported function GetHeaderFooter for get the worksheet header and footer
  • Add new exported function AddSlicer for adding table and pivot table slicers
  • Add new exported function GetPivotTables for get pivot tables
  • Add new exported function DeletePivotTable for delete pivot table
  • Add a new Name field in the PivotTableOptions to support specify pivot table name
  • New support 7 formula functions: DBCS, SEARCH, SEARCHB, TEXT, TEXTAFTER, TEXTBEFORE and xlfn.ANCHORARRAY
  • Add export ChartLineType enumeration to specify the chart line type, related issue #1706
  • Add new Border field in the Chart data type to set the chart area border
  • Add new Type field in the ChartLine type to set the line type
  • Add new exported source relationship and namespace NameSpaceSpreadSheetXR10, ContentTypeSlicer, ContentTypeSlicerCache, and SourceRelationshipSlicer
  • Add new exported extended URI ExtURIPivotCacheDefinition
  • Allow dot character in the defined name, table name, or pivot table name
  • Keep all cells value in the table range when deleting table
  • Support format cell value with fraction number format code
  • Support delete image files from the workbook internally when deleting pictures to reduce generated workbook size and resolve potential security issues
  • Support set the height and width for the comment box, related issue #1688
  • Support update conditional formatting, data validations, defined names, drawing objects, formula reference and volatile dependencies on inserting/deleting columns/rows, related issues #1306 and #1615
  • Support 6 new kinds of conditional formatting types: text, blanks, no blanks, errors, no errors and time period
  • Support calculate formula with multiple dash arithmetic symbol
  • Support copy conditional format and data validation on duplicate row, related issue #1729
  • Support unset custom row height if the height value is -1 when using the SetRowHeight function
  • The SetRowHeight function will return an error if given an invalid row height value
  • The AddChart function support set the data labels position for the chart, related issue #1704
  • The AddChart function support set solid color or transparent fill for chart area, plot area, and maker, add a new field Fill in Chart, ChartPlotArea, and ChartMarker data type, related issue #1786
  • The AddChart function support set chart axis font family, size and strike style, related issue #1809
  • Add new field DataLabelPosition in the ChartSeries data type, support to sets the position of the chart series data label
  • Add new field BubbleSize in the Chart data type, support set the bubble size in all data series for the bubble chart or 3D bubble chart
  • Add new exported ChartDataLabelPositionType data type
  • The GetPictureCells and GetPictures function support get embedded cell images created by Kingsoft WPS™ Office, related issue #664
  • The SetConditionalFormat function support set conditional formatting with multiple cell ranges, related issue #1783
  • Support to update defined names reference when rename worksheet, related issue #1792
  • Add new GetBaseColor function support get the preferred hex color code, related issue #1794
  • The calculation engine support date and formula type cells, related issue #1807
  • Cell value reading functions inherit the Options settings of the OpenReader, related issue #1815

Improve the Compatibility

  • Improve compatibility for absolute path drawing part
  • Improve compatibility for workbook internal tab ratio property value
  • Improve compatibility with empty custom number format code
  • Improve compatibility with the viewer which doesn't support default theme part namespace, related issue #1694
  • Improve delete cell comment shape compatibility with KingSoft WPS™ Office, related issue #1789
  • Saving workbook with sorted internal part path, make identically created workbooks hash checksum is same, related issue #1732

Bug Fixes

  • Add check for MID and MIDB formula functions num_chars arguments, prevent panic on specifying a negative number, resolve issue #1647
  • Fix empty calculate result with numeric arguments in LEN, LOWER, PROPER, REPT, UPPER, and IF formula functions
  • Fix calculate formula functions CHITEST and MMULT panic in some cases
  • Fix a v2.8.0 regression bug, error on set print area and print titles with built-in special defined name
  • Fix a v2.8.0 regression bug, corrupted workbooks generated by improving compatibility with internally indexed color and MRU colors styles parts
  • Fix a v2.8.0 regression bug, number format code apply result was empty, resolve issue #1658
  • Fix a v2.7.1 regression bug, the bubble is hidden in the bubble or 3D bubble chart
  • Fixed panic on AutoFilter by adding nil pointer guard for local sheet ID, resolve issue #1655
  • Fix corrupted workbooks generated when adding tables in some cases
  • Fix incorrect time number format result, resolve issue #1661
  • Supports getting formula string cell value, resolve issue #1665
  • Fix incorrect table ID generated in the workbook which contains single table cells
  • Fix missing relationship parts in the content types in some cases
  • Upgrade number format parser to fix missing literal tokens in some cases
  • Update built-in zh-cn and zh-tw language number format
  • Fix the incorrect custom number format ID allocated, resolve issue #1677
  • Fix updating a table's range by removing it and creating it again doesn't work, resolve issue #1682
  • Fix a potential issue that stream reader temporary files can not be clear, resolve issue #1680
  • Fix incorrect formula calculation result in some cases, resolve issue #1681
  • Fix concurrency race conditions on get cell value, resolve issue #1687
  • Fix some format missing on get style definition, resolve issue #1708
  • Fix number format scientific notation zero fill issues, resolve issue #1710
  • Fix panic on read workbook with internal row element without r attribute, resolve issue #1723
  • Fix GetCellRichText returns error on getting inline rich text cells
  • Fix invalid shared string table index on set cell value in some cases
  • Fix GetConditionalFormats panic on get conditional format without above average rules, resolve issue #1745
  • Fix incorrect adjust merged cells on remove rows, resolve issue #1749
  • Fix the SetConditionalFormat function creates incorrect multiple conditional formats rules priority, resolve issue #1770
  • Fix the GetConditionalFormats function doesn't return gradient data bar rule, resolve issue #1769
  • Fix the GetStyle or GetConditionalStyle function to returns incorrect DecimalPlaces field value, resolve issue #1777
  • Fix the CalcCellValue function does not return raw value when enable RawCellValue, resolve issue #1803

Performance

  • Improves performance for adding and removing pivot table and images
  • Reduce memory consumption by trimming the rows and cells, resolve issue #1712

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

Thank you

Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:

  • @fnickels (Francis Nickels III)
  • @m12r (Matthias Endler)
  • @Abdelaziz-Ouhammou
  • @Juneezee (Eng Zer Jun)
  • @yicixin (壹次心)
  • @TeeRenJing (rjtee)
  • @phperic (magicrabbit)
  • @kjushka (Anton Petrov)
  • @krstak (Marko Krstic)
  • @lpxxn (Nick)
  • @ByteFlyCoding
  • @yangliyl (Yang Li)
  • @15535382838
  • @TajangSec (Tajang)
  • @lujin1 (lujin)
  • @parkoo (Tian)
  • @ZhangXiao1024 (ZX)
  • @zcgly
  • @bramvbilsen (Bram Vanbilsen)
  • @user65536
  • @tianaiyouqing (天爱有情)
  • @cuishuang (cui fliter)
  • @CooolNv (Xuesong)
  • @yuegu520
  • @oneweek20169902 (li)
  • @3zmx
  • @327674413
  • @melf-xyzh (MELF晓宇)
  • @L4nn15ter
  • @rememberher (Jerry)
  • @ooooooobh (cherry)
  • @xxxwang1983
  • @funa12
  • @coolbit
  • @taitaking (zhukewen)
  • @kewenof
  • @ivekkairi (Vivek Kairi)
  • @edwardfward (Ed)
2023-08-28 00:02:25
excelize

v2.8.0

We are pleased to announce the release of version 2.8.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:

Breaking Change

  • Rename exported variable ErrTableNameLength to ErrNameLength
  • Rename exported type PaneOptions to Selection
  • Rename the Runs field to Paragraph in the exported Comment data type
  • Remove the Lang field in the Style data type
  • Removed exported ChartTitle data type, and using the RichTextRun data type instead of it
  • Changed the data type for the DecimalPlaces to pointer of integer
  • Change the default point to pixels conversion factor, resolve issues #279 and #1536
  • Change the AddShape function signature: func (f *File) AddShape(sheet, cell string, opts *Shape) error to func (f *File) AddShape(sheet string, opts *Shape) error

Notable Features

  • Add new exported error variables ErrExistsTableName and ErrorFormControlValue
  • Add new options ShortDatePattern, LongDatePattern, LongTimePattern and CultureInfo in the Options data type, related issue #1199
  • Add new exported data type CultureName enumeration for country code
  • New functions GetTables and DeleteTablesupport to get and remove tables, related issues #674 and #1454
  • New function GetStyle support to get style definitions, related issues #314, #1520 and #1521
  • Support applying cell value with placeholder, padding, rounds numbers, currency, accounting and switches argument number format, and support applying date and time number format for 812 language tags, related issue #660
  • New support 10 formula functions: ARRAYTOTEXT, FORECAST, FORECAST.LINEAR, FREQUENCY, INTERCEPT, ODDFYIELD, ODDLPRICE, ODDLYIELD, PROB, VALUETOTEXT
  • Add file path length limitation details in the error message
  • New function GetPanes support to get sheet panes and view selection
  • New functions AddFormControl, GetFormControls and DeleteFormControl support to form controls, related issues #301 and #1169
  • The AddChart function support set primary titles, related issue #1553
  • The AddChart function support creating chart with a secondary series axis, related issue #518
  • The AddChart function support formatting and setting rich text titles for the chart, related issue #1588
  • Add check for shape type for the AddShape function, an error will be returned if no shape type is specified
  • Support read cell values formatted by the Japanese calendar number format, related issue #1590
  • The GetPictures function support read one cell anchor pictures, related issue #1585
  • The NewConditionalStyle function support to create a conditional format with number format and protection, related issue #1610

Improve the Compatibility

  • Support checking cell value length with multi-bytes characters, related issue #1517
  • Prevent create duplicate tables and defined name with the same name
  • Improve the cell comment box shape size compatibility with KingSoft WPS
  • Support fallback to default column width in sheet format property, related issue #1536
  • Made case in-sensitive for internal worksheet XML path to improve compatibility, related issue #1591

Bug Fixes

  • Escape XML characters after checking cell value length, fix stream writer generated file corrupted, resolve issues #1518, #1519 and #1530
  • Fix incorrect comment box size for multi-line plain text comments
  • Preventing format text cell value as a numeric, resolve issues #1523, #1528 and #1533
  • Fix race conditions for concurrency safety functions
  • Fix incorrect round millisecond for the date time
  • Fix incorrect number formatted result for date and time with 12 hours at AM
  • Fix incorrect formula functions SUMIFS and AVERAGEIFS result, resolve issue #1564
  • Fix basic arithmetic operator priority issues in the calculating engine, resolve issue #1599
  • Fix across worksheet reference issue for the formula calculation engine
  • Fix adjust table issue when after removing rows, resolve issue #1539
  • Support to get multiple images in one cell, resolve issue #1548
  • Fix the added picture position was incorrect in some cases, resolve issue #1560
  • Support adjusting the formula when inserting columns and rows, fix the workbook corruption caused by inserting columns or rows caused, resolve issue #1565
  • Formula function CONCAT, CONCATENATE support concatenation of multiple cell values, resolve issue #1569
  • Fix incorrect formula calculate results on a nested argument function which returns a numeric result, resolve issue #1582
  • Fix internal graphic object counter issues caused added picture was duplicated, resolve issue #1584
  • Fix read date time cell result was incorrectly caused by hours rounding issue, resolve issue #1587
  • Fix panic on getting merged cells with the same start and end axis

Performance

  • Optimizing regexp calls to improve performance, related issue #1532
  • This avoid unnecessary byte/string conversion, related issue #1541

Miscellaneous

  • The dependencies module has been updated
  • Simplify variable declaration and error return statements
  • Remove the built-in language number format code mapping with Unicode values
  • Remove the internal xlsxTabColor data type, using the xlsxColor data type instead of xlsxTabColor
  • Unit tests and godoc updated
  • Documentation website with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated

Thank you

Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:

  • @IAkumaI (Valery Ozarnichuk)
  • @sillydong (Chen Zhidong)
  • @fudali113 (fudali)
  • @Juneezee (Eng Zer Jun)
  • @joehan109
  • @yicixin (壹次心)
  • @vb6iscool
  • @chengcxy (chengxinyao)
  • @lidp20
  • @JDavidVR (David)
  • @fsfsx
  • @cnmlgbgithub
2023-04-10 00:02:20
excelize

v2.7.1

We are pleased to announce the release of version 2.7.1. 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:

Breaking Change

  • Remove the Color field in the ChartLine data type
  • Replace the data type ShapeParagraph with RichTextRun
  • Remove the Color field from the type Shape, and uses the Fill instead of it
  • Remove the exported type AutoFilterListOptions
  • Rename the exported type TableOptions to Table
  • The AddChart function require using ChartType enumeration value to specify the chart type
  • Change 7 functions signature:
    • Change the func (f *File) AutoFilter(sheet, rangeRef string, opts *AutoFilterOptions) error to func (f *File) AutoFilter(sheet, rangeRef string, opts []AutoFilterOptions) error
    • Change the func (f *File) AddPictureFromBytes(sheet, cell, name, extension string, file []byte, opts *GraphicOptions) error to func (f *File) AddPictureFromBytes(sheet, cell string, pic *Picture) error
    • Change the func (f *File) GetPicture(sheet, cell string) (string, []byte, error) to func (f *File) GetPictures(sheet, cell string) ([]Picture, error)
    • Change the func (f *File) AddVBAProject(bin string) error to func (f *File) AddVBAProject(file []byte) error
    • Change the func (f *File) GetComments() (map[string][]Comment, error) to func (f *File) GetComments(sheet string) ([]Comment, error)
    • Change the func (f *File) AddTable(sheet, rangeRef string, opts *TableOptions) error to func (f *File) AddTable(sheet string, table *Table) error
    • Change the func (sw *StreamWriter) AddTable(rangeRef string, opts *TableOptions) error to func (sw *StreamWriter) AddTable(table *Table) error

Notable Features

  • Add new functions SetSheetDimension and GetSheetDimension for workbook dimension supports, related issue #1463
  • The NewStyle function support to create of 17 kinds of fill variants styles
  • Increase max cell styles limit to 65430
  • The AddPicture function allowing insert BMP format images
  • The GetPictures function support to get multiple images in a cell
  • The SetConditionalFormat function support to creating a conditional format with a "stop if true" or "icon sets" rule
  • The SetConditionalFormat function support to set border color and create solid color for the color data bar, related issue #1462
  • The AddChart function support to set the format for the chart data series solid fill, related issue #1474
  • The AddChart function support to set the bubble size in a data series
  • The AddChart function support to specifies the values in second plot for the bar/pie of pie chart
  • The AddChart function support to set number format for chart data labels and axis, related issue #1499
  • The AddTable function support to specify if show header row of the table when create the table
  • The AddTable function support to validate table name, and added a new error constant ErrTableNameLength, related issue #1468
  • The AutoFilter function support to add multiple filter columns when create auto filter
  • The CalcCellValue function support to specify if applying number format style for the cell calculation result
  • The CalcCellValue function support double-byte chars for formula functions: LEFT, LEN, LENB, MID, MIDB, RIGHT and RIGHTB, related issue #1476
  • The CalcCellValue function now returns formula error string in the result, and using the error message in returns error, related issue #1490
  • Case-insensitive for the image file extension name, related issue #1503
  • The stream writer will be skip set cell value when got nil value, related issue #756
  • The GetCellHyperLink function support get cell hyperlink for merged cells
  • Add new exported data type ChartType for represents chart type enumeration

Improve the Compatibility

  • Add support for workbook function groups
  • Add support for strict theme namespace, related issue #1447
  • Fix panic caused by the workbook relationship part not exist
  • Improve compatibility with SST index which contains blank characters, related issue #1508

Bug Fixes

  • Fix decimal number format round issue in some cases
  • Fix incorrect cell type when modifying string cell with the time number, resolve issue #1464
  • Fix cell resolver caused incorrect calculation result, resolve issue #1469
  • Fix conditional format data bar min/max value doesn't work, resolve issue #1492
  • Supports 0 row height and column width, resolve issue #1461

Performance

  • Improve performance for apply number format with month name, related issue #1455
  • Speed up for checking merged cells, related issue #1448

Miscellaneous

  • A pure WebAssembly / Javascript port of Go Excelize library named excelize-wasm NPM package has been production-ready use
  • The dependencies module has been updated
  • Unit tests and godoc updated
  • Using the specialized name in variables and functions
  • Documentation website with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated

Thank you

Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:

  • @liron-l (Liron Levin)
  • @nathj07 (Nathan Davies)
  • @Josh-Weston (Josh Weston)
  • @jaby
  • @FlowingSPDG (Shugo Kawamura)
  • @barismar (Baris Mar Aziz)
  • @doingNobb (张涛)
  • @rpoetrap (Rizki Putra)
  • @huangshaokun
  • @CHANTXU64 (ChantXu64)
  • @playGitboy
2023-01-08 00:23:53
excelize

v2.7.0

We are pleased to announce the release of version 2.7.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:

Breaking Change

  • Upgrade requirements Go language version is 1.16 or later, for migration of deprecation package ioutil
  • Checking and return error for invalid sheet name instead of trim invalid characters
  • The GetCellStyle function no longer return master cell style of the merge cell range
  • Rename 5 exported data types and error constant:
    • Rename PivotTableOption to PivotTableOptions
    • Rename FormatHeaderFooter to HeaderFooterOptions
    • Rename FormatSheetProtection to SheetProtectionOptions
    • Rename SparklineOption to SparklineOptions
    • Rename ErrExistsWorksheet to ErrExistsSheet
  • Remove 54 exported types: AutoPageBreaks, BaseColWidth, BlackAndWhite, CodeName, CustomHeight, Date1904, DefaultColWidth, DefaultGridColor, DefaultRowHeight, EnableFormatConditionsCalculation, FilterPrivacy, FirstPageNumber, FitToHeight, FitToPage, FitToWidth, OutlineSummaryBelow, PageLayoutOption, PageLayoutOptionPtr, PageLayoutOrientation, PageLayoutPaperSize, PageLayoutScale, PageMarginBottom, PageMarginFooter, PageMarginHeader, PageMarginLeft, PageMarginRight, PageMarginsOptions, PageMarginsOptionsPtr, PageMarginTop, Published, RightToLeft, SheetFormatPrOptions, SheetFormatPrOptionsPtr, SheetPrOption, SheetPrOptionPtr, SheetViewOption, SheetViewOptionPtr, ShowFormulas, ShowGridLines, ShowRowColHeaders, ShowRuler, ShowZeros, TabColorIndexed, TabColorRGB, TabColorTheme, TabColorTint, ThickBottom, ThickTop, TopLeftCell, View, WorkbookPrOption, WorkbookPrOptionPtr, ZeroHeight and ZoomScale
  • Remove 2 exported constants: OrientationPortrait and OrientationLandscape
  • Change 21 functions signature:
    • Change the func (f *File) SetPageLayout(sheet string, opts ...PageLayoutOption) error to func (f *File) SetPageLayout(sheet string, opts *PageLayoutOptions) error
    • Change the func (f *File) GetPageLayout(sheet string, opts ...PageLayoutOptionPtr) error to func (f *File) GetPageLayout(sheet string) (PageLayoutOptions, error)
    • Change the func (f *File) SetPageMargins(sheet string, opts ...PageMarginsOptions) error to func (f *File) SetPageMargins(sheet string, opts *PageLayoutMarginsOptions) error
    • Change the func (f *File) GetPageMargins(sheet string, opts ...PageMarginsOptionsPtr) error to func (f *File) GetPageMargins(sheet string) (PageLayoutMarginsOptions, error)
    • Change the func (f *File) GetSheetIndex(sheet string) int to func (f *File) GetSheetIndex(sheet string) (int, error)
    • Change the func (f *File) SetSheetName(source, target string) to func (f *File) SetSheetName(source, target string) error
    • Change the func (f *File) GetSheetVisible(sheet string) to func (f *File) GetSheetVisible(sheet string) (bool, error)
    • Change the func (f *File) DeleteSheet(sheet string) to func (f *File) DeleteSheet(sheet string) error
    • Change the func (f *File) NewSheet(sheet string) int to func (f *File) NewSheet(sheet string) (int, error)
    • Change the func (f *File) NewConditionalStyle(style string) (int, error) to func (f *File) NewConditionalStyle(style *Style) (int, error)
    • Change the func (f *File) NewStyle(style interface{}) (int, error) to func (f *File) NewStyle(style *Style) (int, error)
    • Change the func (f *File) AddChart(sheet, cell, opts string, combo ...string) error to func (f *File) AddChart(sheet, cell string, chart *ChartOptions, combo ...*ChartOptions) error
    • Change the func (f *File) AddChartSheet(sheet, opts string, combo ...string) error to func (f *File) AddChartSheet(sheet string, chart *ChartOptions, combo ...*ChartOptions) error
    • Change the func (f *File) AddShape(sheet, cell, opts string) error to func (f *File) AddShape(sheet, cell string, opts *Shape) error
    • Change the func (f *File) AddPicture(sheet, cell, picture, format string) error to func (f *File) AddPicture(sheet, cell, picture string, opts *GraphicOptions) error
    • Change the func (f *File) AddPictureFromBytes(sheet, cell, opts, name, extension string, file []byte) error to func (f *File) AddPictureFromBytes(sheet, cell, name, extension string, file []byte, opts *GraphicOptions) error
    • Change the func (f *File) AddTable(sheet, hCell, vCell, opts string) error to func (f *File) AddTable(sheet, rangeRef string, opts *TableOptions) error
    • Change the func (sw *StreamWriter) AddTable(hCell, vCell, opts string) error to func (sw *StreamWriter) AddTable(rangeRef string, opts *TableOptions) error
    • Change the func (f *File) AutoFilter(sheet, hCell, vCell, opts string) error to func (f *File) AutoFilter(sheet, rangeRef string, opts *AutoFilterOptions) error
    • Change the func (f *File) SetPanes(sheet, panes string) error to func (f *File) SetPanes(sheet string, panes *Panes) error
    • Change the func (f *File) SetConditionalFormat(sheet, reference, opts string) error to func (f *File) SetConditionalFormat(sheet, rangeRef string, opts []ConditionalFormatOptions) error
  • Introduce new function to instead of existing functions:
    • Use SetSheetProps instead of SetSheetPrOptions and SetSheetFormatPr
    • Use GetSheetProps instead of GetSheetPrOptions and GetSheetFormatPr
    • Use SetSheetView instead of SetSheetViewOptions
    • Use GetSheetView instead of GetSheetViewOptions
    • Use SetWorkbookProps instead of SetWorkbookPrOptions
    • Use GetWorkbookProps instead of GetWorkbookPrOptions
    • Use InsertRows instead of InsertRow for support inserting multiple rows at once
    • Use InsertCols instead of InsertCol for support inserting multiple columns at once
  • Add CellTypeFormula, CellTypeInlineString, CellTypeSharedString and remove CellTypeString in CellType enumeration
  • The parameter has been changed for the AddComment function, support create rich-text in comments, related issue #1204
  • Remove internal error log print, an error will be returned when XML deserialize error, add error return value for the GetComments, GetDefaultFont and SetDefaultFont functions

Notable Features

  • Add new functions GetDataValidations and GetConditionalFormats for get data validations and conditional formats, related issue #827
  • Add new functions ProtectWorkbook and UnprotectWorkbook for workbook protection supports
  • Add new function SetSheetCol for set worksheet column cells, related issue #1247
  • Add new function GetColStyle for set column styles, related issue #1293
  • Add new function SetSheetBackgroundFromBytes for set background picture by given image data, related issue #1405
  • Add new export variable IndexedColorMapping
  • Add 20 export types: AutoFilterListOptions, AutoFilterOptions, Chart, ChartAxis, ChartDimension, ChartLegend, ChartLine, ChartMarker, ChartPlotArea, ChartSeries, ChartTitle, ConditionalFormatOptions, PaneOptions, Panes, GraphicOptions, Shape, ShapeColor, ShapeLine, ShapeParagraph and TableOptions
  • New support 2 formula functions: AGGREGATE and SUBTOTAL
  • The Save, Write and WriteTo function now accept saving options, related issue #744
  • The AddChart function support specify if smooth line of the line chart, related issue #1290
  • The AddChart function support set custom line color in the charts, related issue #1345
  • The AddChart function support custom chart axis font style, related issue #320
  • The AddChart function support create 3D line chart
  • The functions SetColWidth, GetColWidth, SetColVisible, GetColVisible, SetColStyle and GetColStyle now support concurrency safe
  • An error will be returned when set the not exist style ID, related issue #1323
  • An error will be returned when setting the stream row without ascending row numbers, to avoid potential mistakes, related issue #1139
  • The stream writer will be apply style in RowOpts for each cell, related issue #1354
  • The stream writer support to set panes, related issue #1047
  • The stream writer support to set inline rich text cell
  • The stream writer support to insert the page break
  • New 7 exported errors: ErrUnprotectWorkbook, ErrUnprotectWorkbookPassword, ErrStreamSetPanes, ErrSheetNameBlank, ErrSheetNameInvalid, ErrSheetNameLength and ErrSheetNameSingleQuote has been added
  • Introduce 5 new export data types: HeaderFooterOptions, PageLayoutMarginsOptions, PageLayoutOptions, SheetPropsOptions, and ViewOptions
  • Support to set summary columns to appear to the right of detail in an outline
  • Support to set and get font color with theme and tint, related issue #1369
  • Support get cell value which contains a date in the ISO 8601 format
  • Support set and get font color with indexed color
  • Support update column style when inserting or deleting columns
  • The workbook Close function now support cleanup stream writer temporary files
  • The AddPicture function now allowing insert SVG format images

Improve the Compatibility

  • Stream writer writes inline string type for string cell value, related issue #1377
  • Skip empty rows when saving the spreadsheet to reduce file size, related issue #1383

Bug Fixes

  • Fix decimal number format round issue with build-in number format, resolve issue #1328, #1368 and #1373
  • Fix apply AM/PM number format issue in some case, resolve issue #1338
  • Fix the panic when delete comments caused by slice bounds out of range, resolve issue #1343
  • Fix the panic when get cell value in some case, resolve issue #1384 and #1415
  • Fix default number format parse issue with a long string of digits, resolve issue #1360
  • Fix creating a sheet with an empty name cause a corrupted file, resolve issue #1361
  • Fix get image content was empty after inserting image
  • Fix generate workbook corruption after insert columns/rows in some case
  • Delete shared formula in calc chain when writing a formula cell, to fix generate workbook corruption in some case
  • Normalize the sheet name to fix behavior regression between 2.6.0 & 2.6.1, resolve issue #1365
  • Fix the formula calculation result issue of the OR function
  • Fix error on inserting columns or rows on the worksheet which contains one cell merged cell range
  • Fix error on getting the range of merged cells on the worksheet which contains one cell merged cell range
  • Fix getting incomplete rich text cell value in some cases
  • Escape XML characters for stream writer to avoid with corrupt file, resolve issue #1391
  • Fix formula function ADDRESS result error with empty worksheet name, resolve issue #1396
  • Fix insert picture problem in some cases, resolve issue #1404

Performance

  • Improve performance for stream writer merging cells, time cost decrease over 90% and reduce memory usage by about 86% at most
  • Improving performance for stream writer SetRow function, reduces memory usage over and speedup about 19%

Miscellaneous

  • The dependencies module has been updated
  • Unit tests and godoc updated
  • Using the specialized name in variables and functions
  • Documentation website with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated

Thank you

Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:

  • @cdenicola (Cooper de Nicola)
  • @chenliu1993
  • @davidborry
  • @patsak (Kostya Privezentsev)
  • @dafengge0913
  • @Beeb0p (Artem Tarasenko)
  • @invzhi
  • @zhangzitao (Zitao)
  • @jtwatson (Joseph Watson)
  • @carbin-gun (charles.deng)
  • @harrison3000 (Harrison)
  • @strivek (GaoFei)
  • @gonghaibinx
  • @martinmr (Martin Martinez Rivera)
  • @zclark (Zach Clark)
  • @March0715 (March)
  • @renxiaotu
  • @devloppper
  • @jianxinhou
  • @nesstord
  • @Bayzet (Bayzet Tlyupov)
  • @guoweikuang (郭伟匡)
  • @qinyuguang (Gin)
  • @liron-l (Liron Levin)
2022-08-21 01:09:32
excelize

v2.6.1

We are pleased to announce the release of version 2.6.1. 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

  • Rename exported type TabColor to TabColorRGB
  • Rename exported constant TotalColumns to MaxColumns
  • Rename exported variable ErrMaxFileNameLength to ErrMaxFilePathLength
  • Rename exported variable ErrWorkbookExt to ErrWorkbookFileFormat
  • Remove exported variable ErrEncrypt
  • Change worksheet name case-insensitive

Notable Features

  • New support 34 formula functions: CONVERT, COVARIANCE.S, DAVERAGE, DAYS360, DCOUNT, DCOUNTA, DGET, DMAX, DMIN, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DVAR, DVARP, EDATE, EOMONTH, EUROCONVERT, GROWTH, HYPERLINK, MINVERSE, MMULT, NETWORKDAYS, NETWORKDAYS.INTL, PEARSON, RSQ, SKEW.P, SLOPE, STDEVPA, STEYX, TREND, WEEKNUM, WORKDAY, WORKDAY.INTL
  • New function DeleteComment support to delete comment, related issue #849
  • The AddShape function now support assigning a macro to the shape
  • Add support for the 1900 and 1904 date system, related issue #1212
  • Add support update cell hyperlink, related issue #1217
  • The AddPicture function now allowing insert EMF, WMF, EMZ and WMZ format images, related issue #1225
  • Make workbook open failed exception message clear, new exported variable ErrWorkbookPassword for the error message on receiving the incorrect workbook password
  • New exported constants MinFontSize, MinColumns and MaxCellStyles
  • Add array formula support for the formula calculation engine
  • Support for workbook encryption by password, related issue #199
  • RichTextRun support set superscript and subscript by vertAlign attribute
  • The DeleteDataValidation function support deleting all data validations in the worksheet, related issue #1254
  • Formula calculation engine support percentile symbol in condition criteria expression
  • Formula calculation engine support dependence formulas calculation, related issue #1262
  • Add export option MaxCalcIterations for specifies the maximum iterations for iterative calculation
  • Add export type ColorMappingType for color transformation types enumeration
  • Support adjust table range when removing and inserting column/row
  • Support set and get color index, theme and tint for sheet tab, related issue #1283
  • Add new export function GetRowOpts for rows iterator, to support get rows properties, related issue #1296

Improve the Compatibility

  • Improve the compatibility with invalid internal styles count, resolve issue #1211
  • Improve the compatibility with Google Sheet, resolve issue #1244 and #1314
  • Stream writer now skips writing nil values when set cells value for the row, related issue #1299

Bug Fixes

  • Fix generated file corrupted when the same field is used for pivot table data and rows/columns, resolve issue #1203
  • Fix get incorrect rich text value caused by missing cell type checking, resolve issue #1213
  • Fix incorrect cell data types casting results when number formatting, resolve issue #1219
  • Fix the read cell is empty when the cell is in 0 placeholder number format style, resolve issue #1312 and #1313
  • Fix set cell value with column and row style inherit issue, resolve issue #1163
  • Fix panic when adding pane on empty sheet views worksheet
  • Fix the problem of multi arguments formula calculation in some case
  • Fix generated file corrupted caused by incorrect worksheet header footer fields order, resolve issue #1257
  • Fix set cell value failed in some case, resolve issue #1264
  • Fix the panic when set or get sheet view options on the sheet without views options
  • Fix generated workbook corruption caused by empty created or modified dcterms in the document core properties
  • Fix doc properties missing after creating new worksheet, resolve issue #1298

Performance

  • Improve performance for set sheet row and the merging cells, fix performance impact when resolving issue #1129
  • Optimization formula calculation performance
  • Reduces memory usage and speedup the AddComment function, resolve issue #1310

Miscellaneous

  • The dependencies module has been updated
  • Unit tests and godoc updated, made the test case compatible with go1.19
  • Documentation website with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated

Thank you

Thanks for all the contributors to Excelize. Below is a list of contributors that have code contributions in this version:

  • @JDavidVR (David)
  • @sceneq
  • @Juneezee (Eng Zer Jun)
  • @MichealJl (jialei)
  • @ww1516123
  • @z-hua (z.hua)
  • @xdlrt (yeshu)
  • @eaglexiang (Eagle Xiang)
  • @MJacred
  • @ReganYue (Regan Yue)
  • @thomascharbonnel (Thomas Charbonnel)
  • @ee0703 (EE)
  • @NaturalGao (NaturalGao)
  • @Sangua633
2022-04-11 00:04:00
excelize

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

Release Notes

The most notable changes in this release are:

Compatibility

  • 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 with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated
2021-12-31 00:00:01
excelize

v2.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. 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
2021-08-02 00:00:26
excelize

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

Release Notes

The most notable changes in this release are:

Compatibility

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

Notable Features

  • Support set column width in streaming mode, related issue #625
  • Support merge cell in streaming mode, related issue #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 support reference source data range by defined name, relate issue #856
  • The following function now is concurrency safety, relate issue #861
  • 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
  • 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
  • Fix missing pivot attribute of conditional formatting, resolve issue #883
  • Improvement compatibility with invalid first-page number attribute in the page layout
  • Add maximum character limit and fix missing preserve character for SetCellRichText

Bug Fixes

  • Fix 12/24 hours time format parsing error, resolve issue #823 and #841
  • Fix can't get comments by GetComments in some case, resolve issue #825
  • Fix issue when get and add comments on multi authors, resolve issue #829 and #830
  • Fix invalid file path and duplicate namespace when re-creating worksheet, resolve issue #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, resolve issue #842
  • Fix missing formula cell when getting rows value, resolve issue #855
  • Fix comparison fails inside and outside IF function, resolve issue #858
  • Fix GetRowHeight actually get the height of the next row
  • Fix incorrect scope when getting and delete the defined name, resolve issue #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
  • Prevent panic when an incorrect range is provided as PivotTableRange on creating a pivot table
  • Fix reading decimals precision issue, resolve issue #848 and #852
  • Escape XML character in the drop list, avoid corrupted file generated, resolve issue #971
  • Fix incorrect character count limit in the drop list, resolve issue #972
  • Fix high CPU usage on reading cell value with number format caused by Excel time parse issue in some case, resolve issue #974
  • Fix month parsing error in custom number format in some cases

Performance

  • Reduce redundant memory on Save and SaveAs about 19%

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 with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated
2021-04-19 00:00:34
excelize

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

Release Notes

The most notable changes in this release are:

Compatibility

Upgrade requirements Go language version is 1.15 or later.

Notable Features

  • New API 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 and GetPageLayout
  • Now support to change and get tab color of the worksheet by SetSheetPrOptions and GetSheetPrOptions
  • 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 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 which returns an error when has chart sheet or dialog sheet
  • Fix incorrect default column from 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 with multilingual: Arabic, German, Spanish, English, French, Russian, Chinese, Japanese, and Korean, which has been updated
  • Welcome join the Slack channel or Telegram Group to meet other members of our community