Changelog

Version 4.4.1 (2024-09-09)

Version 4.4.0 (2024-08-30)

  • fixed the vulnerability CVE-2023-45853, updated zlib to the version 1.3.1
  • added the sorting of single-cell hyperlinks for the AutoFilter (xlsx)
  • added the Book::setDpiAwareness() method (xlsx)
  • fixed a bug with inserting/removing columns to/from tables in Sheet::insertCol() and Sheet::removeCol() methods (xlsx)
  • fixed a bug with reading values from form controls (xlsx)
  • fixed a bug with reading formatted inline strings (xlsx)
  • fixed a bug with writing a corrupted workbook with a single quote in a sheet name and named range or print area with using this sheet (xlsx)
  • fixed a memory leak in the Book::loadSheet() for xls files
  • fixed a memory leak in the Book::delSheet() for xls files

Version 4.3.0 (2024-04-04)

  • 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 methods:

Version 4.2.0 (2023-06-30)

  • improved the writing performance for numbers in xlsx files
  • added built-in styles support for xlsx files
  • added SVG support for the Book::addPicture() for xlsx files
  • added the possibility to write hyperlinks with changing the color to purple after clicking on the link
  • added the possibility to read arrays from formula expressions (xls)
  • added the possibility to define column width and row height in pixels
  • added the Sheet::getTable() helper method for getting a table by name
  • Sheet::firstRow(), Sheet::lastRow(), Sheet::firstCol(), Sheet::lastCol() methods take merged cells into account now (xls)
  • fixed the Sheet::readStr() with reading some numbers with excess precision
New methods:

Version 4.1.2 (2023-04-12)

  • 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()

Version 4.1.1 (2023-03-03)

  • 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)

Version 4.1.0 (2023-01-30)

  • added the conditional formatting support for xlsx files
    (new ConditionalFormatting and ConditionalFormat classes)
  • added the possibility to get/set an active cell and selection ranges
  • added the possibility to get a color from sheet tabs
  • improved the string overwriting performance for xls files
  • improved the reading performance for xlsx files
  • improved the sorting performance in AutoFilter (xlsx)
  • added ARM64 support for Windows
  • 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 an 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 a 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 hanging issue with loading some xls files
  • fixed a bug with saving xlsx files with a lot of OLE objects
  • removed the PY_SSIZE_T_CLEAN warning in python interface
New methods:

Version 4.0.4 (2022-06-14)

  • 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
  • updated the Fortran interface

Version 4.0.3 (2022-02-01)

  • fixed a bug with corrupted xlsx files on loading/saving
  • fixed a bug with saving xlsx files in non-unicode mode on Windows
  • fixed an issue with loading some xlsx files
  • fixed a bug with using a wide string (const wchar_t*) in filename parameter of the Book::save() method and _UNICODE preprocesor definition for saving xls files on non-Windows platforms (xls)
  • fixed a bug with reading formula expressions with functions with numbers in names such as LOG10 in R1C1 reference mode (xls)
  • added using dyDescent attribute in the Sheet::setDefaultRowHeight() for correct height scaling on different displays, works properly only if a host application has DPI awareness mode (only Windows, xlsx)

Version 4.0.2 (2022-01-24)

  • restored a compatibility with WPS Office for xlsx files
  • added using dyDescent attribute in the Sheet::setRow() for correct height scaling on different displays, works properly only if a host application has DPI awareness mode (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)

Version 4.0.1 (2021-12-08)

  • 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)

Version 4.0.0 (2021-09-10)

  • 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:

Version 3.9.4 (2021-01-13)

  • 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

Version 3.9.3 (2020-12-23)

  • 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()

Version 3.9.2 (2020-09-30)

  • 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)

Version 3.9.1 (2020-05-12)

New methods:

Version 3.9.0 (2020-03-30)

  • added a rich string with mixing fonts support (different fonts in the same cell)
  • added possibility to remove pictures with Sheet::removePicture() and Sheet::removePictureByIndex() methods
  • added possibility to change calculation options
    (Manual/Automatic/Automatic except for data tables)
  • added support of ISO 8601 date/times for Strict Open XML Spreadsheets (xlsx)
  • fixed the issue with loading some xlsx files with frozen rows in Excel for iOS (xlsx)
    (changed the state attribute from "frozenSplit" to "frozen")
  • fixed a bug with loading some xls files
  • fixed a bug with losing formats in empty cells when loading/writing xls files from the version 3.8.8
  • LibXL for Mac and iOS are signed and notarized now
New methods:

Version 3.8.8 (2019-11-28)

Version 3.8.7 (2019-11-13)

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

Version 3.8.6 (2019-10-21)

New methods:

Version 3.8.5 (2019-04-25)

Version 3.8.4 (2018-12-18)

Version 3.8.3 (2018-09-05)

  • 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 methods:

Version 3.8.2 (2018-02-12)

  • 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)

Version 3.8.1 (2017-09-14)

  • 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)

Version 3.8.0 (2017-04-21)

New methods:
New methods only for xlsx format:

Version 3.7.2 (2016-11-27)

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

Version 3.7.1 (2016-11-09)

  • 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)

Version 3.7.0 (2016-09-26)

New methods:
New methods only for xlsx format:

Version 3.6.5 (2015-11-18)

  • fixed CRITICAL bug in "LibXL for Linux" package with reading numbers (xlsx)
  • fixed bug with overwriting existing cell format if format parameter isn't specified or equals 0 (xlsx)
  • taken into account also row size changes for Sheet::lastRow() according to UsedRange COM Interface
  • fixed bug with loading some xlsx files

Version 3.6.4 (2015-09-24)

  • fixed a bug with dependency on current locale for decimal symbol in Sheet::readNum() and Sheet::writeNum() methods (xlsx)
  • added a detecting overlaps to Sheet::setMerge() method

Version 3.6.3 (2015-09-17)

  • now all writing methods (writeStr, writeNum, writeBool) take into account an existing column format if format parameter equals 0
  • added a position parameter to Sheet::setPicture() method:
     POSITION_MOVE_AND_SIZE - move and size with cells
     POSITION_ONLY_MOVE - move but don't size with cells
     POSITION_ABSOLUTE - don't move or size with cells
  • added support of GIF pictures (xlsx)
  • improved Book::addPicture() method: now type of picture is detected by signature instead of extension (xls)
  • improved Sheet::lastRow() and Sheet::lastCol() methods:
    taken into account rows without row index and columns without reference (xlsx)
  • improved Sheet::readFormula() method: now parameter separators (';' or ',') depends on locale
  • improved precision of autofit feature for multiple lines in a cell
  • added a bool return value to Sheet::getMerge() in C# interface
  • fixed bug with using named ranges in formula expressions (xls)
  • fixed bug with % symbol in formula expressions (xls)
  • fixed bugs with UTF-8 encoding in Book::load() and Book::save() methods
  • fixed bugs with UTF-8 encoding in Sheet::setName()
  • fixed a bug in Sheet::setColHidden() method (xls)
  • fixed a bug with crash on loading some corrupted xlsx files
  • fixed bug with saving some graphics elements (xls)
  • fixed bug in Sheet::setAutoFitArea() method
    (the last column didn't automatically fit)
  • fixed bug with loading some xlsx files with zero sized internal files

Version 3.6.2 (2015-04-28)

  • 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()

Version 3.6.1 (2014-11-11)

  • 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

Version 3.6.0 (2014-07-14)

  • 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()

Version 3.5.4 (2014-01-10)

  • 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

Version 3.5.3 (2013-07-03)

  • 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

Version 3.5.2 (2013-06-25)

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

Version 3.5.1 (2013-06-21)

  • fixed bug with overwriting existing strings

Version 3.5.0 (2013-06-19)

  • 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

Version 3.4.2 (2013-04-25)

  • 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

Version 3.4.1 (2013-01-04)

  • 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

Version 3.4.0 (2012-12-26)

  • 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

Version 3.3.1 (2012-08-07)

  • fixed issue with adding pictures (red cross images) in xls files

Version 3.3.0 (2012-08-06)

Improvements:
  • added preserving macros and properties for xls files
  • added fullCalcOnLoad="true" attribute for xlsx files, instruction for Excel to calculate all formulas on loading
  • added defaultRowHeight property for xlsx files
  • changed internal version for xls files
  • added checking for corrupt xls files
Bug fixes:
  • fixed Sheet::getNamedRange(), Sheet::namedRangeSize() and Sheet::namedRange() methods (xls)
  • fixed Sheet::removeRow() for xls files
  • fixed bug in Sheet::getNamedRange() method (xlsx)
  • fixed bug with percent operator in formulas (xls)
  • fixed bug in Book::delSheet() method
  • fixed bug in Sheet::setPicture() method (xlsx)
  • fixed bug with comments (xls)

Version 3.2.4 (2012-04-25)

Improvements:
  • added two auxiliary methods for converting cell reference to row and column and vice versa
  • added Sheet::getTopLeftView() and Sheet::setTopLeftView() methods for getting/setting a view position in the sheet
  • added support for EMF pictures
  • added multisheet reference support in formulas in xls format, for example: SUM(Sheet1:Sheet10!A1)
New methods:
  • Sheet::addrToRowCol()
  • Sheet::rowColToAddr()
  • Sheet::getTopLeftView()
  • Sheet::setTopLeftView()
Bug fixes:
  • fixed bug with loading some files
  • fixed performance issue with Sheet::setMerge() for xlsx files
  • fixed bug in OfficeArtBlip record
  • fixed bug with adding pictures to some xls files
  • fixed bug with macro records in xls files
  • fixed bug with writing strings with leading and trailing space symbols in xlsx format
    (added attribute xml:space="preserve" for such strings)
  • fixed bug in Sheet::setRowHidden() for xls format
  • fixed bug with getting named ranges in some xlsx files
  • fixed bug in Sheet::setCol() method for widths in range from 0 to 1 for xlsx format

Version 3.2.3 (2011-10-12)

Improvements:
  • added possibility to hide/unhide sheets
Bug fixes:
  • fixed bug in Book::addPicture2() for xlsx files
  • fixed bugs with loading some xls files
New methods:
  • Sheet::hidden()
  • Sheet::setHidden()

Version 3.2.2 (2011-09-22)

  • added support of inlineStr in cell's data type (xlsx)
  • added checking length of sheet name (it's allowed maximum 31 characters)
  • fixed bugs in copying formats and fonts, methods Book::addFormat() and Book::addFont() when are used initFormat and initFont parameters. Now it is possible to pass to these methods a format or a font from other workbook.
  • improved non-unicode strings: if a conversion of wide character to a multibyte character is not possible in the current locale then LibXL uses '?' symbol in this place
  • fixed bug in Sheet::colWidth()
  • added R1C1 style formula support
  • improved formula parsing, now it is possible to use comma (,) and semicolon (;) as parameter dividers in functions
  • fixed bug in Sheet::removeCol() (xlsx)
  • optimized speed in Sheet::clear() method
  • optimized speed of firstRow/lastRow/firstCol/lastCol methods for xlsx part, added ignoring a trial banner in trial mode
  • fixed bug with loss of formatting when user copy-paste cells between workbooks (xls)
  • small memory usage optimization for xlsx part
  • changed the open mode to "shared" for xlsx files
  • fixed bug in the picture extraction algorithm: now Book::addPicture() and Sheet::getPicture() functions return zero-based indexes

Version 3.2.1 (2011-08-08)

  • fixed critical bug from previous version: incorrect reading/writing numbers with decimal point in xlsx files
  • fixed bug in Sheet::readNum() and Sheet::writeNum() for big-endian platforms
  • fixed bug with loading some xls file, before Book::load() can incorrectly return false with error message "Xls::read(): workbook section is not found"

Version 3.2.0 (2011-07-25)

Improvements:
  • added possibility to insert a new sheet at any position
  • added possibility to extract pictures
  • added possibility to extract page breaks
  • added possibility to extract named range by name (Sheet::getNamedRange) and by index (Sheet::namedRange)
  • added possibility to fit a sheet to specified number of pages (Sheet::setPrintFit)
  • added access to R1C1 reference style property (Book::refR1C1 and Book::setRefR1C1)
  • added BIFF version property for xls files (Book::biffVersion)
  • added return value for Book::setLocale() method
  • improved Sheet::writeFormula(), added support references to other sheets within the workbook
  • improved method Sheet::setPicture2(): picture takes size of underlying cell/merging cells if width and height aren't specified
  • removed line breaks in xml files (xlsx)
New methods:
  • Book::insertSheet()
  • Book::pictureSize()
  • Book::getPicture()
  • Book::refR1C1()
  • Book::setRefR1C1()
  • Book::biffVersion()
  • Sheet::pictureSize()
  • Sheet::getPicture()
  • Sheet::getHorPageBreakSize()
  • Sheet::getHorPageBreak()
  • Sheet::getVerPageBreakSize()
  • Sheet::getVerPageBreak()
  • Sheet::getNamedRange()
  • Sheet::namedRangeSize()
  • Sheet::namedRange()
  • Sheet::getPrintFit()
  • Sheet::setPrintFit()
Bug fixes:
  • fixed bug in Sheet::getNamedRange()
  • fixed string interoperability in .NET wrapper
  • fixed bug in Sheet::isDate() method for xlsx files
  • fixed bug with reading formatted strings
  • fixed bug in writeFormula (removed error message "toReversePolish: unknown token" for some correct values)
  • fixed bug with load/save conditional formatting
  • fixed bug in Sheet::isDate() method
  • fixed bug in ExternSheet record (xls)
  • fixed method Book::delSheet() (xls)
  • fixed Book::setActiveSheet(): deselecting other sheets (xlsx)
  • fixed Sheet::setPicture2(): checking ranges of offset_x and offset_y parameters (xls)
  • fixed bug in fixed Book::delSheet(): removing definedName element (xlsx)
  • fixed bug in Sheet::setPrintRepeatRows() and Sheet::setPrintRepeatCols(): added quotation for sheet's name with space symbols (xlsx)
  • fixed bug in Sheet::setName(): added checking dependencies in definedNames block (xlsx)
  • fixed Sheet::setPicture()
  • fixed Sheet::setName(), added checking dependencies for old name in xlsx-file
  • fixed Sheet::lastRow() and Sheet::lastCol(), taken into account non-default height of cell
  • method Sheet::getNamedRange() is case-insensitive now
  • fixed bug with "Unexpected attribute" error for xml:space attribute in formula element (xlsx)
  • fixed addPicture/setPicture for different sheets (xlsx)
  • fixed bug when writing string constants in formulas (xls)
  • added removing storage extension elements from sheets and workbooks (xlsx)

Version 3.1.0 (2010-11-16)

Improvements:
  • named ranges support
  • RGB colors support for xls format
  • added offset_x and offset_y parameters in Sheet::setPicture() method
  • print area support
  • print titles support (repeated rows and columns on each page)
  • added two sheet's properties: summaryBelow and summaryRight for grouped cells
  • reduced memory consumtion for reading/writing xlsx files
New methods:
  • Sheet::setNamedRange()
  • Sheet::delNamedRange()
  • Sheet::setPrintRepeatRows()
  • Sheet::setPrintRepeatCols()
  • Sheet::setPrintArea()
  • Sheet::clearPrintRepeats()
  • Sheet::clearPrintArea()
  • Sheet::groupSummaryBelow()
  • Sheet::setGroupSummaryBelow()
  • Sheet::groupSummaryRight()
  • Sheet::setGroupSummaryRight()
Bug fixes:
  • fixed bugs in Sheet::setCol() and Sheet::groupCols() methods
  • added stretch property for pictures in xlsx files
  • fixed bug with adding pictures in existing xls-file
  • fixed bug with shared formulas

Version 3.0.2 (2010-09-15)

  • improved writing performance for xlsx format
  • changed all "unsigned short" types to "int", therefore now it's possible to write more than 65536 rows in xlsx format

Version 3.0.1 (2010-08-25)

  • fixed bug with loading some xlsx files (unknown attribute error)

Version 3.0.0 (2010-08-24)

  • Excel 2007/2010 support (xlsx)
Changes in binary interface:
  • optimized reading speed and memory consumption for big files
  • fixed bug with sheet's name in Japanese/Korean/Chinese languages in multi-byte interface
  • changed behaviour of Sheet::split() method
  • added method Sheet::setCellFormat()
  • removed message "too many dir sectors - perhaps it's infinite loop" for large files
  • fixed bug in OfficeArtFDGGBlock
  • added access to list of formats and fonts in document
  • added msec parameter in datePack/dateUnpack
New methods:
  • xlCreateXMLBook()
  • Book::format()
  • Book::formatSize()
  • Book::font()
  • Book::fontSize()
  • Book::colorPack()
  • Book::colorUnpack()
  • Book::rgbMode()
  • Book::setRgbMode()
  • Sheet::setCellFormat()

Version 2.4.3 (2010-06-07)

  • added Sheet::setProtect() and Sheet::protect() methods
  • fixed bug with loading xls files with form controls
  • fixed bug in Sheet::writeFormula()
  • fixed some incorrect relative references
  • fixed bug with reading string values in shared formula
  • fixed printZoom default value
  • fixed .NET interface: Book::errorMessage(), Book::sheetCount(), Book::activeSheet()
  • fixed bugs with loading some xls files
  • fixed bug with reading coordinates in shared formula
  • fixed bug with incorrect reading formula with external reference

Version 2.4.2 (2010-05-12)

Improvements:
  • support BMP and DIB picture formats
  • loading pictures from memory buffer
New methods:
  • Book::addPicture2()
Bug fixes:
  • fixed bug with reading shared formulas
  • fixed issue with loading workbook with dropdown lists ("error in record FtLbsData")
  • changed return type "unsigned short" to "int" in firstRow/lastRow/firstCol/lastCol methods
  • restoring normal book state after loading error
  • fixed datePack/dateUnpack for time values
  • fixed bugs with loading some xls files

Version 2.4.1 (2010-03-01)

  • removed memory leaks
  • small fixes

Version 2.4.0 (2010-02-25)

Improvements:
  • formula support
  • ability to change a default font
New methods:
  • Sheet::readFormula()
  • Sheet::writeFormula()
  • Sheet::isFormula()
  • Book::defaultFont()
  • Book::setDefaultFont()

Version 2.3.2 (2010-02-01)

  • fixed bug with saving some xls files
  • fixed bug in margin methods

Version 2.3.1 (2010-01-20)

  • fixed bug with Book::loadRaw() on Linux and Mac
  • changed behavior Book::saveRaw(): now LibXL writes raw data to internal memory buffer

Version 2.3.0 (2010-01-14)

Improvements:
  • loading/saving a book from/to memory buffer
  • copying sheets and cells
  • access to format for any cell (without detecting type)
  • now library doesn't touch existing formats when user edits an existing document
  • renaming sheets
New methods:
  • Book::loadRaw()
  • Book::saveRaw()
  • Book::copySheet()
  • Sheet::copyCell()
  • Sheet::cellFormat()
  • Sheet::setName()
Bug fixes:
  • fixed bug with opening xls in Numbers (iWork on MacOSX)
  • fixed Sheet::colWidth() and Sheet:setCol(), precise column's widths now
  • fixed issues with loading some xls files
  • fixed bug when user loads several xls files in memory at a time
  • fixed Sheet::setRow()
  • values from firstRow/lastRow/firstCol/lastCol methods are updating in run-time now

Version 2.2.2 (2009-10-13)

Improvements:
  • inserting/removing rows/columns
  • removing merges
New methods:
  • Sheet::insertCol()
  • Sheet::insertRow()
  • Sheet::removeCol()
  • Sheet::removeRow()
  • Sheet::delMerge()

Version 2.2.1

  • new method Sheet::isDate() for fast detecting any date/time values
  • fixed Sheet::split()
  • removed GLIBCXX_3.4.9 dependency in Linux package

Version 2.2.0

Improvements:
  • support comments
  • sheet splitting
  • grouping and outline
  • clear areas in sheets
  • extracting dimensions of sheets
New methods:
  • Sheet::readComment()
  • Sheet::writeComment()
  • Sheet::split()
  • Sheet::split2()
  • Sheet::groupRows()
  • Sheet::groupCols()
  • Sheet::clear()
  • Sheet::firstRow()
  • Sheet::lastRow()
  • Sheet::firstCol()
  • Sheet::lastCol()
Bug fixes:
  • fixed warning when file is opened in Excel 2007
  • opens xls with external links without errors
  • fixed some minor bugs

Version 2.1.0

Improvements:
  • support pictures (png, jpg, wmf)
  • page breaks support
  • read/write bool values
  • read/write blank cells
  • detecting cell's type
  • read cells with formula
  • get/set active sheet
  • get row height and column width
New methods:
  • Book::addPicture()
  • Book::activeSheet()
  • Book::setActiveSheet()
  • Sheet::cellType()
  • Sheet::setPicture()
  • Sheet::readBool()
  • Sheet::writeBool()
  • Sheet::readError()
  • Sheet::colWidth()
  • Sheet::rowHeight()
  • Sheet::setHorPageBreak()
  • Sheet::setVerPageBreak()
Bug fixes:
  • opens xls with macros without errors
  • opens xls with charts without errors
  • fixed some minor bugs

Version 2.0.0

  • New release with a completely new redesign

Home  Download now  Purchase now  View documentation