Version 5.2.0 (2026-05-15) -------------------------------------------------- - fixed the vulnerability CVE-2026-22184, updated zlib to the version 1.3.2 - added possibility to read data validations from xlsx files - added possibility to remove filters from tables (xlsx) - added the support for xlsx files in the Book::loadWithoutEmptyCells() - fixed a bug with reading strings with incorrect character encoding in the Sheet::readStr() on Linux/MacOSX (xls) - fixed an issue with loading some xls files with message "read error: record id can't be 0" - fixed an issue with corrupting output files in the AutoFilter::setSort() method (xlsx) - fixed the unhandled exception in the Format::borderLeftColor() method (xlsx) New methods: - Sheet::dataValidation() - Sheet::dataValidationSize() - Table::isAutoFilter() - Table::removeFilter() Version 5.1.0 (2026-01-20) -------------------------------------------------- - added the Book::errorCode() for getting error codes - added possibility to read conditional formats with the Book::conditionalFormat() - added possibility to remove conditional formattings with the Sheet::removeConditionalFormatting() - added possibility to clear all data with the Book::clear() - fixed a bug with decrypting password-protected workbooks for the 32-bit version of the library - fixed an issue that caused a crash when using an empty password New methods: - Book::errorCode() - Book::conditionalFormat() - Book::conditionalFormatSize() - Book::clear() - Sheet::conditionalFormatting() - Sheet::removeConditionalFormatting() - Sheet::conditionalFormattingSize() Version 5.0.1 (2025-12-18) -------------------------------------------------- - added the support of one more encryption algorithm (LibXL supports ECMA-376 standard and agile encryptions with SHA-1 and SHA-512 hashing algorithms) - added password verifications with the error message "incorrect password" - added the Book::loadInfoRaw() for loading only information about sheets from the workbook in memory buffer - fixed an issue with decrypting password protected xlsx files on Linux and Mac New methods: - Book::loadInfoRaw() Version 5.0.0 (2025-12-05) -------------------------------------------------- - added the support of password protected xlsx files (only loading) - fixed a performance issue with reading cells from some large non-typical xlsx files that don't use "r" attributes in rows - fixed issues with reading and writing code units above U+FFFF - fixed an issue with Valgrind warning "Invalid read of size 1" - fixed an issue with copying sheets with space characters in the name (xlsx) - fixed issues with using LET, LAMBDA, BYROW and BYCOL functions (xlsx) - fixed issues with reading some dates New methods: - Book::setPassword() Version 4.6.0 (2025-04-01) -------------------------------------------------- - added the support of tables (xlsx) - added the updating conditional formattings in Sheet::insertCol(), Sheet::insertRow(), Sheet::removeCol() and Sheet::removeRow() methods - changed the sorting behavior from case-senstitive to case-insensitive in the same way as in Excel - improved the sorting performance - fixed the vulnerability CVE-2023-45853 in MiniZip New methods: - Sheet::addTable() - Sheet::getTableByName() - Sheet::getTableByIndex() - Sheet::applyFilter2() - Table::name() - Table::setName() - Table::ref() - Table::setRef() - Table::autoFilter() - Table::style() - Table::setStyle() - Table::showRowStripes() - Table::setShowRowStripes() - Table::showColumnStripes() - Table::setShowColumnStripes() - Table::showFirstColumn() - Table::setShowFirstColumn() - Table::showLastColumn() - Table::setShowLastColumn() - Table::columnSize() - Table::columnName() - Table::setColumnName() Version 4.5.1 (2025-01-07) -------------------------------------------------- - added the Sheet::setBorder() method for drawing borders in the area of cells - fixed reading emojis and unicode surrogate pairs in the Sheet::readStr() on Linux/Mac - fixed a bug with skipping some rows on reading from some xlsx files from 3rd-party vendors (xlsx) - updated Fortran interface Version 4.5.0 (2024-11-22) -------------------------------------------------- - added support of workbook properties (xlsx) - added support of XLOOKUP, LET and XMATCH functions (xlsx) - added access to default column and row formats: Sheet::colFormat() and Sheet::rowFormat() methods - added the updating/moving existing pictures after inserting or removing rows and columns with Sheet::insertRow(), removeRow(), insertCol() and removeCol() methods (xlsx) - added the Book::removeAllPhonetics() method: removes all phonetics data (furigana) from a workbook (xlsx) - added some specific language locales for detecting dates in the Sheet::isDate() (xlsx) - fixed a precision error with calculating RGB values from theme colors (xlsx) - fixed a bug with writing a corrupted file after using Sheet::removeCol(), Sheet::insertCol(), Sheet::insertRow() methods with shared formulas in a sheet (xlsx) - fixed a bug with using a sheet name with a quote together with the Sheet::setPrintRepeatRows() and Sheet::setPrintRepeatCols() methods (xlsx) - fixed a bug with loading some xlsx files New methods: - Book::coreProperties() - Book::removeAllPhonetics() - CoreProperties::title() - CoreProperties::setTitle() - CoreProperties::subject() - CoreProperties::setSubject() - CoreProperties::creator() - CoreProperties::setCreator() - CoreProperties::lastModifiedBy() - CoreProperties::setLastModifiedBy() - CoreProperties::created() - CoreProperties::setCreated() - CoreProperties::createdAsDouble() - CoreProperties::setCreatedAsDouble() - CoreProperties::modified() - CoreProperties::setModified() - CoreProperties::modifiedAsDouble() - CoreProperties::setModifiedAsDouble() - CoreProperties::tags() - CoreProperties::setTags() - CoreProperties::categories() - CoreProperties::setCategories() - CoreProperties::comments() - CoreProperties::setComments() - CoreProperties::removeAll() - Sheet::colFormat() - Sheet::rowFormat() Version 4.4.1 (2024-09-09) -------------------------------------------------- - fixed a bug with sorting in the Sheet::applyFilter() (xlsx) 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 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::setPrintAread(), 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: - Book::removeVBA() - Book::removePrinterSettings() 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: - Book::addFormatFromStyle() - Sheet::setColPx() - Sheet::setRowPx() - Sheet::getTable() 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) -------------------------------------------------- - 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) - updated zlib to version 1.2.13 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: - Book::addConditionalFormat() - Sheet::addConditionalFormatting() - Sheet::getActiveCell() - Sheet::setActiveCell() - Sheet::selectionRange() - Sheet::addSelectionRange() - Sheet::removeSelection() - Sheet::tabColor() - Sheet::getTabColor() - ConditionalFormatting::addRange() - ConditionalFormatting::addRule() - ConditionalFormatting::addTopRule() - ConditionalFormatting::addOpNumRule() - ConditionalFormatting::addOpStrRule() - ConditionalFormatting::addAboveAverageRule() - ConditionalFormatting::addTimePeriodRule() - ConditionalFormatting::add2ColorScaleRule() - ConditionalFormatting::add2ColorScaleFormulaRule() - ConditionalFormatting::add3ColorScaleRule() - ConditionalFormatting::add3ColorScaleFormulaRule() - ConditionalFormat::font() - ConditionalFormat::numFormat() - ConditionalFormat::setNumFormat() - ConditionalFormat::customNumFormat() - ConditionalFormat::setCustomNumFormat() - ConditionalFormat::setBorder() - ConditionalFormat::setBorderColor() - ConditionalFormat::borderLeft() - ConditionalFormat::setBorderLeft() - ConditionalFormat::borderRight() - ConditionalFormat::setBorderRight() - ConditionalFormat::borderTop() - ConditionalFormat::setBorderTop() - ConditionalFormat::borderBottom() - ConditionalFormat::setBorderBottom() - ConditionalFormat::borderLeftColor() - ConditionalFormat::setBorderLeftColor() - ConditionalFormat::borderRightColor() - ConditionalFormat::setBorderRightColor() - ConditionalFormat::borderTopColor() - ConditionalFormat::setBorderTopColor() - ConditionalFormat::borderBottomColor() - ConditionalFormat::setBorderBottomColor() - ConditionalFormat::fillPattern() - ConditionalFormat::setFillPattern() - ConditionalFormat::patternForegroundColor() - ConditionalFormat::setPatternForegroundColor() - ConditionalFormat::patternBackgroundColor() - ConditionalFormat::setPatternBackgroundColor() 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 (xlsx) - 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 (xlsx) Version 4.0.3 (2022-01-31) -------------------------------------------------- - 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: - 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() 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) -------------------------------------------------- - 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 instance 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() 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: - Book::addRichString() - Sheet::isRichStr() - Sheet::readRichStr() - Sheet::writeRichStr() - RichString::addFont() - RichString::addText() - RichString::getText() - RichString::textSize() - Sheet::removePicture() - Sheet::removePictureByIndex() - Book::calcMode() - Book::setCalcMode() Version 3.8.8 (2019-11-28) -------------------------------------------------- - improved performance and reduced memory consumption for files with a lot of strings - fixed GDI handle leaks on Windows - fixed a bug in Sheet::getNamedRange() and Sheet::namedRangeSize() when used immediately after Sheet::setNamedRange() (xls) - restored the updateNamedRanges parameter for Sheet::insertCol/insertRow/removeCol/removeRow C++ methods and added xlSheetInsertColAndKeepRanges/xlSheetInsertRowAndKeepRanges/xlSheetRemoveColAndKeepRanges/xlSheetRemoveRowAndKeepRanges C functions Version 3.8.7 (2019-11-14) -------------------------------------------------- - 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) -------------------------------------------------- - 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() Version 3.8.5 (2019-04-24) -------------------------------------------------- - now Sheet::setPicture() and Sheet::setPicture2() methods ignore 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) Version 3.8.4 (2018-12-18) -------------------------------------------------- - 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) Version 3.8.3 (2018-09-03) -------------------------------------------------- - 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: - Book::loadInfo() - Book::getSheetName() Version 3.8.2 (2018-02-12) -------------------------------------------------- - 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) - fixed some security issues Version 3.8.1 (2017-09-13) -------------------------------------------------- - 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) -------------------------------------------------- - 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() 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 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-29) -------------------------------------------------- - 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() 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) - fixed bug with loading some xlsx files - taken into account also row size changes for Sheet::lastRow() according to UsedRange COM Interface 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 merges - 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 XML 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) New methods: - Sheet::mergeSize() - Sheet::merge() - Sheet::delMergeByIndex() - Sheet::hyperlinkSize() - Sheet::hyperlink() - Sheet::delHyperlink() - Sheet::addHyperlink() - 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 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 in is "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