LibXL Changelog

What's new in LibXL 3.8.0

Apr 28, 2017
  • added data validation feature for xlsx files
  • added Book::addPictureAsLink() method (xlsx)
  • added Book::moveSheet() method
  • improved speed of Sheet::setMerge() method (removed overlap checking)
  • improved compatibility with Apple Preview (xls)
  • fixed a bug in autofit feature for a custom format with % character
  • fixed issue with access to some worksheets for exported xlsx files from the SAS statistical package
  • fixed issue with 1900/2/1 date
  • fixed a bug with loading some xls files
  • fixed a bug in Book::load() and xlBookLoadUsingTempFile() with passing a full path with directories for temporary files (xlsx)
  • fixed a bug in Sheet::setCol() (xls)
  • fixed Sheet::getNamedRange() and Sheet::namedRange() methods for correct extracting the whole column or row as a range (xlsx)
  • New methods:
  • Book::moveSheet()
  • New methods only for xlsx format:
  • Sheet::addDataValidation()
  • Sheet::addDataValidationDouble()
  • Sheet::removeDataValidations()
  • Book::addPictureAsLink()

New in LibXL 3.7.1 (Nov 10, 2016)

  • added possibility to load 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 and iOS packages
  • fixed a bug with unlocked pictures in protected sheets (xls)

New in LibXL 3.6.4 (Sep 27, 2015)

  • 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

New in LibXL 3.6.3 (Sep 18, 2015)

  • 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

New in LibXL 3.6.2 (May 4, 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 (Jun 21, 2013)

  • 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 (Apr 27, 2013)

  • 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 for any compilers)
  • 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.2.4 (Apr 26, 2012)

  • 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

New in LibXL 3.2.3 (Dec 9, 2011)

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

New in LibXL 3.2.2 (Sep 23, 2011)

  • 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

New in LibXL 3.1.0 (Nov 18, 2010)

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

New in LibXL 3.0.2 (Sep 15, 2010)

  • improved writing performance for xlsx
  • possibility of writing more than 65536 rows for xlsx
  • possibility of keeping i386 and x64 libraries in the same folder

New in LibXL 3.0.0 (Aug 24, 2010)

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

New in LibXL 2.4.3 (Jun 8, 2010)

  • 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

New in LibXL 2.4.2 (May 12, 2010)

  • 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

New in LibXL 2.4.0 (Feb 26, 2010)

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

New in LibXL 2.3.2 (Feb 2, 2010)

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

New in LibXL 2.3.0 (Jan 16, 2010)

  • Improvements:
  • read/write 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:
  • iWork::Numbers opens xls files successfully
  • 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

New in LibXL 2.2.2 (Oct 15, 2009)

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

New in LibXL 2.2.1 (Sep 21, 2009)

  • new method Sheet::isDate() for fast detecting any date/time values
  • fixed Sheet::split()