LibXL Changelog

What's new in LibXL 4.3.0

Apr 5, 2024
  • Added the possibility to remove all VBA code and macros from xlsm and xlsb files
  • Added the possibility to remove all printer settings from xlsx, xlsm and xlsb files
  • Added the possibility to set an active cell for splitted sheets (xlsx)
  • Added keepAllSheets flag for the partial loading methods, if it's true, all sheets are saved back with the Book::save() method, but only one specified sheet is available for processing, thus LibXL can save more memory. It works only for xlsx files, LibXL ignores this flag for xls files
  • Added the multi-level sorting for AutoFilter::addSort() and Sheet::applyFilter() (xlsx)
  • Added the updating/moving existing tables with Sheet::insertRow() and Sheet::removeRow() methods (xlsx)
  • Improved SVG support
  • Fixed a bug with adding a hyperlink after setting a picture, the output xlsx file was unreadable by Excel
  • Fixed a bug with incorrect return values in Sheet::rowHeight() and Sheet::rowHeightPx() for non-standard DPI settings for some xlsx files
  • Fixed Sheet::setPrintArea(), Sheet::setPrintRepeatRows(), Sheet::setPrintRepeatCols() for working with Japanese/Chinese sheet names
  • Fixed a bug with reading some values in double quotes in the Sheet::readFormula() (xlsx)
  • Fixed a bug with a workbook overwriting dialog message in Excel when an existing sheet is copied in xlsx file
  • Fixed a bug with reading some cells after using functions which changes sheet's size (xlsx)
  • Fixed a bug with reading tables in some xlsx files
  • Fixed some bugs with partial loading/saving some workbooks in the Book::loadSheet() and Book::save() methods (xlsx)
  • Fixed a bug with using non UTF-8 character encodings on Linux and Mac
  • Fixed a bug with reading some data from a partially loaded workbook (xlsx)

New in LibXL 4.2.0 (Jun 30, 2023)

  • improved the writing performance for numbers (xlsx)
  • added built-in styles (xlsx)
  • added SVG image format support (xlsx)
  • added the possibility to read arrays from
  • formula expressions (xls)
  • added the possibility to define column width and row height in pixels
  • fixed some bugs

New in LibXL 4.1.2 (Apr 12, 2023)

  • Added the Sheet::hyperlinkIndex() for checking if the cell contains a link
  • Fixed a bug with loading some xlsx files ("Element not found")
  • Fixed a bug with writing some xlsx files with empty XML inside
  • Fixed a bug with writing empty strings for xls files
  • Fixed an output precision for reading numbers by the Sheet::readStr()

New in LibXL 4.1.1 (Mar 3, 2023)

  • Updated zlib to version 1.2.13
  • Fixed a bug with getting correct width and height of picture in the Sheet::getPicture() method in accordance with current DPI settings (xlsx, only Windows)

New in LibXL 4.1.0 (Jan 30, 2023)

  • Added conditional formatting support for xlsx files
  • Added possibility to get/set an active cell and selection ranges
  • Added possibility to get a color from sheet tabs
  • Improved string overwriting performance for xls files
  • Improved sorting performance in AutoFilter (xlsx)
  • Fixed a bug with cutting sheet names to less than 31 characters in Chinese
  • Fixed a bug with loading some xls files ("Label size is incorrect")
  • Fixed a bug with union multiple column filters in the Sheet::applyFilter() method (xlsx)
  • Fixed an issue with loading some xls files (error message "invalid jpg file")
  • Fixed an issue with encoding dates before the 1st of March 1900 in the Book::datePack()
  • Fixed issue with loading some xlsx files with special unicode character BOM (byte order mark) at unexpected position inside XML files
  • Fixed issues with copying existing sheet with named ranges in the Book::insertSheet() what led to corrupted output files
  • Fixed new-delete-type-mismatch memory issue on Linux and now LibXL works with jemalloc properly
  • Fixed an issue with saving UTF-8 encoded filename in the Book::save() method on Windows (xlsx)
  • Fixed a hang with loading some xls files
  • Fixed a bug with saving xlsx files with a lot of OLE objects
  • Removed PY_SSIZE_T_CLEAN warning in python interface

New in LibXL 4.0.4 (Jun 14, 2022)

  • Fixed a bug with copying formats in the Book::addFormat() method, left and right border colors weren't copied (xlsx)
  • Fixed a bug with duplicating some controls elements on saving xlsx files
  • Fixed a bug with string concatenations in the Book::addRichString() method (xls)
  • Fixed a bug with copying an existing sheet in the Sheet::addSheet() method for the latest versions of xlsx files

New in LibXL 4.0.2 (Jan 24, 2022)

  • Restored a compatibility with WPS Office for xlsx files
  • Added using dyDescent attribute in the Sheet::setRow() for correct height scaling on different displays (only Windows, xlsx)
  • Fixed XML eXternal Entity injection (XXE) security issue by disabling DTD entity expansion (xlsx)
  • Fixed a bug in the Book::save() with using non-ascii characters for workbook name (xlsx)
  • Fixed an issue with loading some xlsx files
  • Fixed a bug in the Sheet::writeFormula() with using named ranges in formula expressions (xls)

New in LibXL 4.0.1 (Dec 9, 2021)

  • Fixed an issue with a screen resolution/scaling of UI elements of host application on Windows (removed DPI awareness)
  • Fixed a bug with reading strings with incorrect character encoding in the Sheet::readStr() on Linux/MacOSX (xlsx)
  • Fixed a bug with writing a corrupted workbook with huge amounts of cells (xlsx)
  • Fixed bugs with loading some xls/xlsx files
  • Fixed a bug with preserving spaces in strings (xlsx)
  • Fixed the Sheet::readStr() with reading some numbers (rounding) (xlsx)

New in LibXL 4.0.0 (Sep 11, 2021)

  • Improved compatibility with the latest versions of Excel (updated XSD schemes) (xlsx)
  • Added theme/tint color support (xlsx)
  • Added possibility to read/write from/to controls (checkboxes, compoboxes, listboxes) (xlsx)
  • Added High DPI support to adding pictures
  • Added aarch64 platform for Linux
  • Added the AutoFilter::addSort() for multiple level sorting
  • Added double rounding for reading numbers with the Sheet::readStr() (xlsx)
  • Added an initialization of AutoFilter columns for reading
  • Fixed the Sheet::readStr() for reading numbers and booleans from formula expressions (xls)
  • Fixed a bug with writing unexpected _xlfn to some formula expressions (xlsx)
  • Fixed a bug in the Sheet::applyFilter() with using a custom filter
  • Fixed memory leaks in Delphi interface
  • New methods:
  • AutoFilter::addSort()
  • Sheet::formControlSize()
  • Sheet::formControl()
  • FormControl::objectType()
  • FormControl::checked()
  • FormControl::setChecked()
  • FormControl::fmlaGroup()
  • FormControl::setFmlaGroup()
  • FormControl::fmlaLink()
  • FormControl::setFmlaLink()
  • FormControl::fmlaRange()
  • FormControl::setFmlaRange()
  • FormControl::fmlaTxbx()
  • FormControl::setFmlaTxbx()
  • FormControl::name()
  • FormControl::linkedCell()
  • FormControl::listFillRange()
  • FormControl::macro()
  • FormControl::altText()
  • FormControl::locked()
  • FormControl::defaultSize()
  • FormControl::print()
  • FormControl::disabled()
  • FormControl::item()
  • FormControl::itemSize()
  • FormControl::addItem()
  • FormControl::insertItem()
  • FormControl::clearItems()
  • FormControl::dropLines()
  • FormControl::setDropLines()
  • FormControl::dx()
  • FormControl::setDx()
  • FormControl::firstButton()
  • FormControl::setFirstButton()
  • FormControl::horiz()
  • FormControl::setHoriz()
  • FormControl::inc()
  • FormControl::setInc()
  • FormControl::getMax()
  • FormControl::setMax()
  • FormControl::getMin()
  • FormControl::setMin()
  • FormControl::multiSel()
  • FormControl::setMultiSel()
  • FormControl::sel()
  • FormControl::setSel()
  • FormControl::fromAnchor()
  • FormControl::toAnchor()

New in LibXL 3.9.5 (Aug 5, 2021)

  • Improved compatibility with the latest versions of Excel (updated XSD schemes) (xlsx)
  • Added theme/tint color support (xlsx)
  • Added possibility to read/write from/to controls (checkboxes, compoboxes, listboxes) (xlsx)
  • Added High DPI support to adding pictures
  • Added aarch64 platform for Linux
  • Added the AutoFilter::addSort() for multiple level sorting
  • Added double rounding for reading numbers with the Sheet::readStr() (xlsx)
  • Added an initialization of AutoFilter columns for reading
  • Fixed a bug with writing unexpected _xlfn to some formula expressions (xlsx)
  • Fixed a bug in the Sheet::applyFilter() with using a custom filter
  • Fixed memory leaks in Delphi interface

New in LibXL 3.9.4 (Jan 13, 2021)

  • Added ARMv7 hard float build to the LibXL for Linux package
  • Added Mac Catalyst support to the LibXL for iOS package
  • Improved compatibility with WPS Office after grouping rows and columns
  • Fixed a bug in the Book::setMerge() method and with copying existing formats and fonts

New in LibXL 3.9.3 (Dec 23, 2020)

  • improved performance
  • fixed a bug in the Sheet::groupRows() with overwriting outline level (xls)
  • fixed a bug with applying formatting in the Sheet::setMerge() for formula cells (xls)
  • fixed a bug in the Sheet::applyFilter() for non-unicode strings in filters (xlsx)
  • fixed a bug with handling /r and /n symbols in RichString::addText() (xlsx)
  • fixed a bug with getting Japanese characters from the Sheet::hyperlink() (xlsx)
  • fixed a bug with '.' (decimal point) at the end of the string for whole numbers in the Sheet::readStr()

New in LibXL 3.9.2 (Sep 30, 2020)

  • Added support of new formula functions in Excel for Office 365 / Excel 2019 (xlsx)
  • Added a possibility to extract compressed pictures with the Book::getPicture() (xls)
  • Added quoting for xFF08 and xFF09 characters (xlsx)
  • Fixed a bug with reading ISO 8601 date/times (xlsx)
  • Fixed a bug in the Sheet::setTabColor() when color is overwritten (xlsx)
  • Fixed a bug in the Sheet::getNamedRange() for sheet names with exclamation (!) (xlsx)
  • Fixed a bug in the Sheet::setPrintArea() for sheet names with apostrophe (') (xlsx)
  • Fixed a bug with partially loading in the Sheet::loadRaw() (xls)
  • Fixed an issue with unavailable table information in some files (xlsx)
  • Fixed error messages from the Book::errorMessage() after using the Book::load() method with failure (xlsx)
  • Fixed a bug with writing strings with phonetic blocks (xls)

New in LibXL 3.9.1 (May 12, 2020)

  • added Sheet::firstFilledRow(), Sheet::lastFilledRow(), Sheet::firstFilledCol() and Sheet::lastFilledCol() methods which return the boundaries of filled cells and ignore blank/format cells
  • Sheet::firstRow(), Sheet::lastRow(), Sheet::firstCol() and Sheet::lastCol() methods return the boundaries of used cells including blank/format cells
  • added initFont parameter to the RichString::addFont() method
  • added xlSheetWriteStrAsNum() in C headers
  • now the library switches to the normal mode (non-strict) for possibility to continue to use other methods with the current book instanse after unsuccessful loading of xlsx file
  • now the Sheet::setMerge() copies top left cell format for all merged cells (xls)
  • fixed a bug with reading empty strings (xls)
  • fixed a bug with loading some xlsx files (error message "Required attribute(s) missing")
  • fixed a bug with reading some fonts in the RichString::getText() method
  • fixed a bug with using the Sheet::setPrintRepeatRows() when the name of sheet contains special characters (xlsx)
  • New methods:
  • Sheet::firstFilledRow()
  • Sheet::lastFilledRow()
  • Sheet::firstFilledCol()
  • Sheet::lastFilledCol()

New in LibXL 3.9.0 (Mar 31, 2020)

  • Added support of ISO 8601 date/times
  • Fixed some bugs
  • Added a rich string with Mixing fonts support:
  • Book::addRichString()
  • Sheet::readRichStr()
  • Sheet::writeRichStr()
  • Sheet::isRichString()
  • RichString class
  • Added possibility to remove pictures:
  • Sheet::removePicture()
  • Sheet::removePictureByIndex()
  • Added possibility to change calculation options:
  • Book::calcMode()
  • Book::setCalcMode()

New in LibXL 3.8.7 (Nov 14, 2019)

  • Fixed a critical bug from the version 3.8.6 with loading some xlsx files (please do not use the version 3.8.6)

New in LibXL 3.8.6 (Nov 14, 2019)

  • Added support of new formula functions in Excel for Office 365 / Excel 2019 (xlsx)
  • Added new properties for the Sheet::setPicture() method:
  • Scale > 0 - the picture is aligned to the left top corner of the cell or merged area with the specified scale factor
  • Scale = 0 - the picture is stretched inside the specified cell or merged area
  • Scale < 0 - the picture is aligned to the center of the cell or merged area with the specified scale factor
  • Added Sheet::rowHeightPx() and Sheet::colWidthPx() methods
  • Sheet::firstRow(), Sheet::lastRow(), Sheet::firstCol() and Sheet::lastCol() methods ignore blank cells now
  • Added parial support of formula arrays for xlsx files, for example now the Sheet::writeFormula() can accept {=SUM(A2:F2)} value
  • Added a change of AutoFilter position together with Sheet::insertRow(), Sheet::removeRow(), Sheet::insertCol(), Sheet::removeCol() methods (xlsx)
  • Fixed autofit feature for non-standard Windows scaling (High DPI)
  • Fixed a bug in the Book::load() method for using a path with drive part for temporary file (xlsx)
  • Fixed some bugs with loading some xls and xlsx files
  • Fixed a bug in the Sheet::getNamedRange() when a xls file is parially loaded by the Book::loadSheet() method (xls)
  • Fixed bugs in Sheet::removeRow() and Sheet::removeCol() methods when row or column contains merged cells
  • Fixed a bug with crash in the Book::addFormat() when workbook is xlsx and initFormat is from xls file
  • Fixed a bug with saving workbook with complicated OfficeArt objects (xls)
  • Fixed a bug in Sheet::setPicture2() with default width/height (-1,-1) for some Excel versions and LibreOffice
  • Fixed a bug in Sheet::setAutoFitArea() with default parameters for xls files
  • New methods:
  • Sheet::colWidthPx()
  • Sheet::rowHeightPx()

New in LibXL 3.8.5 (Apr 25, 2019)

  • Now Sheet::setPicture() and Sheet::setPicture2() methods ignores the current Windows scaling and interprets width and height as pixels for 100% scale factor (96 DPI)
  • Now autofit feature ignores merged cells
  • Added string length checking in Sheet::writeStr() (xlsx)
  • Fixed a bug in the Book::dateUnpack() method
  • Fixed a bug with loading some xls files
  • Fixed a bug in the Sheet::readFormula() method (xls)

New in LibXL 3.8.4 (Dec 18, 2018)

  • Changed the open mode to "shared" for xlsx files
  • Added updateNamedRanges parameter to Sheet::insertCol(), Sheet::insertRow(), Sheet::removeCol() and Sheet::removeRow() methods
  • Added bitcode support for iOS package
  • Fixed a bug with character encoding in ANSI mode for xlsx files
  • Fixed a bug in formula processing (xls)

New in LibXL 3.8.3 (Sep 6, 2018)

  • Improved a copying colors from source format (initFormat parameter) in Book::addFormat() (xlsx)
  • Added reading comments for xlsx files
  • Added Book::loadInfo() and Book::getSheetName() methods
  • Improved reading some strings from inlined rich text (xlsx)
  • Improved reading performance for xlsx files without "r" attribute in rows (xlsx)
  • Added escaping "_x" character sequence (xlsx)
  • Added sheet name checking in Book::addSheet() and Sheet::setName() methods (using some special characters leads to unreadable files)
  • Removed i386 binary from the framework for Mac (AppStore doesn't accept i386 architecture now)
  • Changed mbstowcs() to MultiByteToWideChar() in Windows version
  • Fixed a bug with using a sheet name with space characters in the Book::insertSheet() method in case of using initSheet with defined names (xlsx)
  • Fixed a bug with mistaken convering semicolon to comma inside arrays and braces {} (xlsx)
  • Fixed an issue with loading UTF-8 file names in Windows (xls)
  • Fixed some security issues

New in LibXL 3.8.2 (Feb 13, 2018)

  • Fixed security issues
  • Added the Book::loadWithoutEmptyCells() method (xls)
  • Added support RGB values without alpha channel
  • Fixed a bug with copying an existing sheet in the Book::addSheet() method for Excel 2016 files (xlsx)
  • Fixed a bug with loading some xlsx files with pictures with incorrect extensions
  • Fixed a bug with saving some sheets with extensions (xlsx)
  • Fixed a bug with saving cells without "r" attribute (xlsx)
  • Fixed a bug with saving some Strict Open XML Spreadsheets (xlsx)
  • Fixed issue with unnecessary escaping some Unicode characters inside XML files (xlsx)

New in LibXL 3.8.1 (Sep 14, 2017)

  • Improved compatibility with Excel 2016 (xlsx)
  • Added support of OOXML format extensions (saved untouched, xlsx)
  • Fixed error "XML character encoding not supported" with loading files with specifying a temporary file in Linux/Mac platforms
  • Added an update of all existing named ranges after using Sheet::insertRow(), Sheet::removeRow(), Sheet::insertCol(), Sheet::removeCol() methods (xlsx)
  • Removed some memory leaks for xlsx format
  • Fixed issue with autofit for cells with text rotation (only windows)
  • Added linkPath parameter to Sheet::getPicture() method (xlsx)

New in LibXL 3.8.0 (Apr 24, 2017)

  • Added data validation feature. For xlsx files, see the method
  • Sheet::addDataValidation()
  • Added the Book::moveSheet() ,ethod
  • Added the method Book::addPictureAsLink()(xlsx)
  • Improved compatibility
  • With Apple Preview (xls)
  • Added bitcode support
  • For iOS package
  • Fixed some bugs

New in LibXL 3.7.2 (Dec 20, 2016)

  • changed 3 overloaded Book::load() methods to Book::load(), Bool::loadSheet() and Book::loadPartially() for correct working in C++ Builder

New in LibXL 3.7.1 (Dec 20, 2016)

  • added possibility to load a workbook partially with specified sheet index and row range
  • added possibility to use temporary files to decrease memory consumption
  • added Swift 3.0 interface to Mac package
  • fixed a bug with unlocked pictures in protected sheets (xls)

New in LibXL 3.7.0 (Dec 20, 2016)

  • added AutoFilter support (xlsx)
  • added Sheet::addIgnoredError() method for possibility to ignore some errors
  • (green triangles on left sides of cells)
  • added password support and enhanced protection properties to Sheet::setProtect() method
  • added Sheet::setTabColor() method for setting sheet tab colors
  • added copying named ranges together with copying sheets
  • added Sheet::removeComment() method for removing comments in xls files
  • added Sheet::writeFormulaNum(), Sheet::writeFormulaStr() and Sheet::writeFormulaBool() methods for writing formula expressions with precalculated values
  • improved precision for autofit feature for non-windows platforms
  • added Sheet::table() and Sheet::tableSize() methods
  • added Sheet::writeError() method
  • added correct processing rows with r = "0" in xlsx files
  • now Sheet::readStr() method can read numbers, added CellType parameters to Sheet::writeStr() for writing strings as numbers (xlsx)
  • changed behavior of Book::setLocale() method, UTF-8 value is ignored for wide strings now
  • added a recalculation of Sheet::lastRow() value after using of Sheet::clear() and Sheet::removeRow() methods (xls)
  • taken into account also row size changes for Sheet::lastRow() according to UsedRange COM Interface (xls)
  • improved algorithms with ColInfo records for better compability with old Excel applications, modified Sheet::setCol() and Sheet::groupCols() methods (xls)
  • fixed a bug with reading data from rows and cells without explicitly specified references in xlsx files
  • fixed Sheet::removeRow() method (xls)
  • fixed Sheet::clear() method (xls)
  • fixed a bug in Book::delSheet() with removing necessary named ranges
  • fixed a bug with reading of numbers in some xlsx files (issue with corrupted locale)
  • fixed a bug in Sheet::setPicture2() with ignoring pos parameter for more than one pictures
  • fixed a bug in Book::dateUnpack() with return 1000 ms in some cases
  • fixed a bug in Book::dateUnpack() method for dates before 1900-03-01
  • fixed a bug in XMLSheetImplT::calcFirstRow()
  • fixed Sheet::cellType() for a cell with formula string (t="str") (xlsx)
  • fixed an issue with loading some non-standard xlsx files
  • fixed a bug in Sheet::insertCol() (xlsx)
  • fixed issues with Sheet::setCol() on Mac (xlsx)
  • fixed a bug in Sheet::getPicture() for xlsx files (it was impossible to get correct parameters rowBottom, colRight, width and height for some pictures)
  • fixed Sheet::readStr() method in .NET wrapper
  • fixed a bug in Sheet::removeRow() (xlsx)
  • fixed a bug in Sheet::namedRangeSize() (xls)
  • fixed a bug with loading some xls files
  • fixed a python wrapper
  • NEW METHODS:
  • Sheet::addIgnoredError()
  • Sheet::setTabColor()
  • Sheet::removeComment() (xls)
  • Sheet::writeFormulaNum()
  • Sheet::writeFormulaStr()
  • Sheet::writeFormulaBool()
  • Sheet::writeError()
  • Sheet::table()
  • Sheet::tableSize()
  • NEW METHODS ONLY FOR XLSX FORMAT:
  • Sheet::autoFilter()
  • Sheet::applyFilter()
  • Sheet::removeFilter()
  • AutoFilter::getRef()
  • AutoFilter::setRef()
  • AutoFilter::column()
  • AutoFilter::columnSize()
  • AutoFilter::columnByIndex()
  • AutoFilter::getSortRange()
  • AutoFilter::getSort()
  • AutoFilter::setSort()
  • FilterColumn::index()
  • FilterColumn::filterType()
  • FilterColumn::filterSize()
  • FilterColumn::filter()
  • FilterColumn::addFilter()
  • FilterColumn::getTop10()
  • FilterColumn::setTop10()
  • FilterColumn::getCustomFilter()
  • FilterColumn::setCustomFilter()
  • FilterColumn::clear()

New in LibXL 3.6.2 (Apr 29, 2015)

  • added applyFont, applyFill, applyAlignment, applyBorder, applyNumberFormat attributes to styles for better compatibility with Apple Preview (xlsx)
  • added default Row records to a sheet, it should improve compatibility with some third-party Excel tools/applications (xls)
  • improved precision of autofit feature (sections)
  • added calcId attribute to calcPr element (xlsx)
  • fixed bug in Sheet::writeFormula() with some R1C1 formulas
  • fixed bug in Book::addPicture2(): it didn't recognize some JPG files (xls)
  • fixed bug in Sheet::readStr() method with empty strings in some xlsx files
  • fixed loading of some ExtSST records (xls)
  • fixed bug with long custom format string
  • fixed bug with reading formula expressions with user defined functions (xls)
  • fixed bug with false loading some xls file with xlCreateXMLBook() function
  • fixed bugs with copying a sheet with pictures, charts or diagrams in Book::addSheet() (xlsx)
  • New methods:
  • Sheet::setAutoFitArea()
  • Sheet::printRepeatRows()
  • Sheet::printRepeatCols()
  • Sheet::printArea()

New in LibXL 3.6.1 (Nov 12, 2014)

  • added more precision to autofit column width feature (number formats are taken into consideration)
  • optimized autofit column width feature: removed memory leak and increased performance
  • (Sheet::setCol() with -1 width parameter)
  • added sheet dimensions to output files (xlsx)
  • added anyAttribute to CT_Sst type for reading some irregular xlsx files
  • standardized LibXL.framework in "LibXL for Mac" package, now it can be signed
  • fixed bug in Book::setActiveSheet() method when book contains a chart (xlsx)
  • fixed bug in Book::delSheet() (xls)
  • fixed errors with autofit in trial mode
  • fixed bug in Sheet::isDate(): added checking of quotes in custom format
  • fixed the memory bug when loading some xls files
  • fixed Sheet::firstRow() and Sheet::lastRow() methods (xlsx)
  • fixed bug with writing references in formula expressions in lower case in Sheet:writeFormula() (xls)
  • fixed bug with precision of real numbers in formula expressions in Sheet:readFormula() (xls)
  • fixed bugs with some formula expressions with SUM, AVERAGE, MIN, MAX functions (xls)
  • fixed bug with corrupted output files with macros on Solaris/AIX

New in LibXL 3.6.0 (Nov 12, 2014)

  • added autofit column width support
  • (use -1 for width parameter in Sheet::setCol() method)
  • added hyperlink support
  • added direct access to merged cells
  • added a possibility to create xltx and xlsm files
  • added a possibility to read errors "#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A" with Sheet::readFormula() method from xls files
  • added support Windows-1251 encoding in xlsx files
  • added support RGB colors without alpha component in xlsx files
  • added a cell range support in formula expressions (xls)
  • improved performance of Sheet::cellFormat() method (xls)
  • optimized xls files reading
  • fixed a bug with copying a sheet with pictures in Book::addSheet() (xls)
  • fixed a memory bug when used a second parameter in Book::addSheet()
  • fixed issue with nested quotes in formula expressions (xls)
  • fixed bug with using a single quote in formula expressions (xls)
  • fixed issue with loading some xlsx files which were created in Numbers on Mac ("Unknown exception")
  • fixed bug with UTF-8 encoding in custom format strings (xlsx)
  • fixed bug with reading some non-standard characters (xlsx)
  • fixed bug in Sheet::groupRows() (xlsx)
  • fixed bug with viewing some xls files on iPhone/MacOSX
  • New methods:
  • Sheet:hyperlinkSize()
  • Sheet:hyperlink()
  • Sheet:delHyperlink()
  • Sheet:addHyperlink()
  • Sheet:mergeSize()
  • Sheet:merge()
  • Sheet:delMergeByIndex()
  • Sheet:splitInfo()

New in LibXL 3.5.4 (Nov 12, 2014)

  • added xltx and xltm file support
  • added scopeId parameter to Sheet::getNamedRange(), Sheet::setNamedRange(), Sheet::delNamedRange(), Sheet::namedRange() methods for specifying scope of named range.
  • added Book::isTemplate() and Book::setTemplate() methods for detecting xltx files and converting from xlsx to xltx and vice versa
  • added "hidden" parameter to Sheet::getNamedRange() and Sheet::namedRange() methods
  • added support of built-in named ranges in Sheet::getNamedRange() method (xls)
  • added compatibility between fonts/formats from xls files and fonts/formats from xlsx files (now formats and fonts from xls file can be used as initial parameter for Book::addFormat() and Book::addFont() methods for xlsx file and vice versa)
  • added Sheet::rightToLeft() and Sheet::setRightToLeft() methods that specifies whether the sheet is in "right to left" display mode.
  • added support shared formulas in Sheet::clear() method
  • fixed bugs with loading some xls files
  • fixed bug in Sheet::readFormula() (xls)
  • fixed Sheet::isDate() method (xlsx)
  • fixed bug with writing some non-standard characters (xlsx)
  • fixed bug with writing some formula expressions with functions without arguments (xls)
  • fixed bug with placing pictures into a sheet with non-default font (incorrect aspect ratio and size)
  • fixed issue with overwriting some strings in xls files
  • fixed bug with shared formulas (xls)
  • fixed bug in Sheet::insertRow() for xls files
  • fixed bug with extracting pictures in some xls files

New in LibXL 3.5.3 (Nov 12, 2014)

  • added two methods for getting and setting date system:
  • Book::isDate1904() and Book::setDate1904()
  • fixed bug with reading some strings with underscore (_) characters (xlsx)
  • fixed bug with loading some xlsx files

New in LibXL 3.5.2 (Nov 12, 2014)

  • fixed bug with overwriting existing strings
  • fixed bug in NoteSh record ("CalcDelta size is incorrect")

New in LibXL 3.5.1 (Nov 12, 2014)

  • fixed bug with overwriting existing strings

New in LibXL 3.5.0 (Nov 12, 2014)

  • added support of Strict Open XML Spreadsheet format (Excel 2013)
  • increased precision of msec parameters in Book::dateUnpack() and Book::dataPack() methods. Now it is 1/1000 seconds.
  • fixed bug with writing references to other sheets in formulas (xls)
  • fixed bug with reading shared formulas from xlsx format
  • fixed bug in Format::setPatternForegroundColor() and Format::setPatternBackgroundColor() methods (xlsx)
  • added support of dual format files (BIFF8/BIFF5)
  • added built-in named ranges for xls format
  • fixed bug in namedRangeSize() for xls format
  • fixed bug with named ranges that refer to external workbooks
  • added support of characters which cannot be represented in XML (xlsx)
  • added warning if named range contains multiple parts
  • fixed bug with incorrect identification of 1900/1904 date formats in Excel for Mac (xlsx)
  • fixed bug with reading some formulas (xls)
  • fixed bug with writing formula with SUMPRODUCT function (thanks to Don Prouty, DSA) (xls)
  • fixed bug with loading/saving some xlsx files with drawings

New in LibXL 3.4.2 (Nov 12, 2014)

  • fixed NoteSh record (some xls files couldn't be loaded)
  • fixed RRTabId record
  • (Protected view mode was activated in Excel 2010 and Excel 2013 in some cases)
  • fixed Book::insertSheet() method
  • (named ranges, print areas, repeat rows and columns didn't remain in corresponding sheets)
  • fixed Style record (some xls files couldn't be loaded)
  • added quotes for names with hyphen (xlsx)
  • fixed bug in Sheet::delNamedRange() (xlsx)
  • fixed bug with saving some xls files with pictures (output file was corrupt)
  • fixed bug with crash in MinGW 4.7 (added __cdecl keyword)
  • fixed bug with Mac::Numbers compatibility
  • fixed bug with overlapping of calculated values in cells with formula expression and format for xlsx format
  • (no screen refresh)
  • fixed bug in Sheet::writeFormula() method (xls)
  • ("incorrect token in formula" error message for some valid expressions)
  • fixes for Apple clang compiler
  • updated ZipArchive library to version 4.5
  • fixed bug with column-based named ranges in Sheet::getNamedRange() and Sheet::namedRange() methods for xlsx format
  • fixed bug in Sheet::getPicture() for xlsx files
  • fixed bug in Sheet::insertRow() for xls files
  • fixed bug with loading some xlsx files ("mergeCell ref is invalid")
  • fixed bug with length of sheet name in UTF-8 encoding
  • fixed bug with loading some xlsx files ("bad end element" error)
  • fixed bug with SUMPRODUCT function in formula expression (xls)
  • fixed bug in Sheet::pictureSize() for xlsx files

New in LibXL 3.4.1 (Nov 12, 2014)

  • added Book::sheetType() method for detection of chart sheet
  • fixed bug with loading some xls files
  • fixed bug in Sheet::delNamedRange() for xls files
  • fixed bug in Sheet::writeNum() method

New in LibXL 3.4.0 (Nov 12, 2014)

  • added support of xlsm files
  • added UTF-8 support (mode is activated with book->setLocale("UTF-8"))
  • fixed bugs with loading some xls and xlsx files
  • fixed compatibility issues with Numbers for Mac
  • added support of empty cells in Sheet::cellFormat()
  • changed format picture property from "Move but don't size with cells" to "Move and size with cells"
  • fixed Sheet::setNamedRange(), Sheet::setPrintArea() and Sheet::setName() methods
  • for sheet's names with spaces (xlsx)
  • fixed bugs with some formula expressions with IF and AND functions (xls)
  • fixed bug with saving multi formatted cells in xlsx files
  • fixed bug in Book::delSheet() for xlsx files
  • fixed bug with reading some kind of error values
  • fixed issues with adding pictures into preloaded workbooks with pictures (xls)
  • fixed bug in Book::saveRaw() method (xls)
  • fixed possible memory leaks due to mismatched malloc/free functions (xlsx)
  • fixed bug in Sheet::cellFormat()
  • fixed bug with format/font inheritance for xlsx files
  • fixed Sheet::setPrintRepeatCols() method for xlsx files

New in LibXL 3.1.0 (Nov 21, 2010)

  • named ranges support setNamedRange()
  • RGB colors in xls format
  • print area/print titles support setPrintRepeatRows() setPrintRepeatCols() setPrintArea()
  • grouped cells properties setGroupSummaryBelow() setGroupSummaryRight()
  • reduced memory consumtion for xlsx

New in LibXL 3.0 (Aug 24, 2010)

  • Excel 2007/2010 support (xlsx)

New in LibXL 2.4.1 (Mar 3, 2010)

  • Removed memory leaks
  • Small fixes