Version History



  • New : Support for exporting Persian to PDF
  • Fixed : When rendering charts that had labels linked to "Value from Cells" FlexCel could fail to render the labels if they weren''t manually specified.
  • Fixed : There was an error when rendering PDF Khmer text in some corner cases.
  • Fixed : SetCellFromHtml could raise an exception with some surrogated unicode characters.
  • Fixed : Reviewed bidi algorithm because some arabic numbers could be written in the wrong order when exporting to PDF
  • Fixed : Header images wouldn''t be copied when calling the InsertAndCopySheets overload that takes an array of integers for the sheets to copy.
  • Fixed : Data labels in scatter chart were incorrect when the axis was reversed.
  • Fixed : Charts with hidden series could raise an exception when drawing trendlines.


  • New : Support for creating your own cultures when rendering Excel files
  • New : Support for Delphi 12
  • New : Improved Lazarus support
  • Improved : Removed canvas.getMatrix calls in Android as they are deprecated
  • Improved : Now FlexCel will use its own Random implementation
  • Improved : New setting FlexCelConfig.LocalizedTEXTFunction allows you to fine tune how FlexCel recalculates the "=TEXT()" function
  • Improved : Improved Label rendering when drawing charts
  • Improved : FlexCel is more forgiving with too long data validation formulas
  • Improved : Better support for subnormal numbers
  • Fixed : When parsing some PNGs FlexCel could raise an arithmetic overflow.
  • Fixed : When drawing Error Bars in charts, if there was no line color assigned, FlexCel would not draw the lines instead of drawing them in Black.
  • Fixed : When autofitting rows FlexCel ignored empty columns formatted with big fonts.
  • Fixed : The XLOOKUP function would return "not found" when searching for a value bigger than any on the list and the match mode was "Exact match or next larger item", when there were empty entries in the list. This is the logical way to do it, it is how Google Sheets does it, and it is how Excel itself behaves in the other match modes. But for this match mode, Excel returns the first empty item in the list, not "not found". Now FlexCel mimics this behavior.
  • Fixed : The SINGLE function could return wrong results in very special cases.
  • Fixed : Some files could show the error: "Value was either too large or too small for an Int32" when opened.
  • Fixed : If the column names of a table had a format like "@_@" or similar, FlexCel would apply them and the column name would be wrong. Now the names are the same as in Excel. Some other improvements in handling of column names.
  • Fixed : FlexCel could fail to detect circular references in some corner cases, causing a Stack Overflow.


  • Fixed : InsertAndCopyRange failed to copy cells in some corner cases


  • New : New property FlexCelSVGExport.Encoding allows you to change the encoding when generating SVG files
  • Improved : Now FlexCel will write the xml inside xlsx files as UTF-8 without BOM
  • Improved : Now FlexCel will default the encoding when to exporting to CSV or SVG to UTF-8 without BOM
  • Fixed : Page numbers in headers and footers were invalid when exporting to SVG.
  • Fixed : InsertAndCopyRange could fail to copy cells in some corner cases
  • Fixed : In some rare cases when you entered #N/A as a parameter in a formula, the full formula would become #N/A. See
  • Fixed : GetStringFromCell could return invalid values when the cell contained a formula. This was a regression in v7.18 from v7.17. See
  • Fixed : FlexCel could write some invalid DXF records when saving table styles to xls files.


  • New : Support for the new Excel2023 default format including the default aptos font
  • New : New property TExcelFile.PrintErrors allows to directly manipulate how to print the errors in formulas inside the sheet
  • New : New property TExcelFile.PrintComments allows to directly manipulate how to print the comments
  • New : New properties TExcelFile.PrintOptionsInitializedFromPrinter, TExcelFile.PrintOverThenDown and TExcelFile.PrintDraftQuality
  • New : FlexCel can now render error in formulas according to the printer settings
  • New : FlexCel can now render comments "As displayed"
  • New : Added new units FlexCel.VCLSupport, FlexCel.FMXSupport, FlexCel.LCLSupport and FlexCel.SKIASupport to replace VCL.FlexCel.Core, FMX.FlexCel.Core, LCL.FlexCel.Core and SKIA.FlexCel.Core respectively
  • Improved : ApiMate won't show PrinterDriverSettings by default
  • Fixed : When rendering charts inside xlsx files, sometimes FlexCel could fail to render the correct colors of some series, using black instead.
  • Fixed : Formatted numbers inside cells with "Shrink to fit" didn't shrink when exporting to HTML
  • Fixed : <#ref> tag in reports now returns a real reference instead of a string with the cell reference. While for most uses it is the same, in some cases like in the "Cell" function, the old <#ref> tag wouldn't work.
  • Fixed : <#if> tag in reports would consider the condition true if it evaluated to NAN or a number.


  • New : Now FlexCel preserves digital signatures in macros
  • New : New property DeleteEmptyBandsFixed in FlexCelReport controls what to do with empty fixed bands
  • New : Improved the experimental Lazarus support
  • New : Improved API for defining columns in tables
  • Fixed : When recreating a table by calling AddTable and SetTable, the cell references could become invalid
  • Fixed : The functions IFERROR, ISERROR and ISERR could sometimes return the error instead of the result of the function.
  • Fixed : The functions COUNTIF, SUMIF and similar could behave wrong in some cases where you used wildcards. See
  • Fixed : The function [TRIM]( in Excel removes double spaces in the middle of a text, while FlexCel's implementation would remove only spaces at the beginning at end. Also Excel's TRIM only removes spaces (character 32) and not other whitespace like tabs. FlexCel's implementation now does the same.
  • Fixed : The function =NUMBERVALUE() could throw an Exception in some border cases
  • Fixed : Setup would fail to install if there was a "," in the path
  • Fixed : FlexCel could fail to read some encrypted files raising an error 'Error in CryptoAPI: $80090004'.


  • New : Support iOSSimulator Arm64
  • Improved : Support for different numeric systems in cell formatting
  • Fixed : When rendering charts that used =Offset to define the data, and some columns or rows were hidden, FlexCel could fail to hide the values when the chart was set to not plot hidden cells.
  • Fixed : When exporting to CSV, there could be errors if you manually set cell values to NaN.
  • Fixed : When exporting in Linux the pdfs could be wrong, due to a bug in Delphi. This release workarounds this bug and allows correct exporting from Linux.
  • Fixed : In some rare cases when there was merged cells whose first cell was hidden the background might not be exported to pdf.
  • Fixed : If printing gridlines and there were hidden columns or rows, the gridlines could be printed over the real borders of a cell.
  • Fixed : If exporting to PDF and the "normal" font of the spreadsheet was Calibri 9 columns could be wider than expected.
  • Fixed : FlexCel could hang while loading some invalid third-party files.


  • New : You can now run reports on TList like TList
  • New : Support for functions MAP, REDUCE, SCAN, MAKEARRAY, BYROW, and BYCOL
  • New : Support for functions FILTER, SORT, SORTBY, and UNIQUE
  • New : New SHEET VISIBLE tag that allows to change the visibility of a sheet in a report
  • New : Experimental Lazarus support
  • New : Ability to change the newline separator when exporting to CSV or Fixed-lenght text files
  • Improved : Support for Array formulas, UDFs, external names and Lambda names in Tokens
  • Improved : Improved behavior when inside Docker containers
  • Improved : Function "INDEX" is now array-enabled
  • Fixed : When third-party files had invalid modify/creation dates, FlexCel would refuse to open them. Now it will just ignore invalid dates and let those properties empty.
  • Fixed : There could be errors in some specific cases when copying sheets from one file to another which had linked formulas.
  • Fixed : The limit for custom formats in xls files was in 4000 when it really is 4050. We've updated FlexCel to allow 4050 custom formats when saving as xls.
  • Fixed : The functions SWITCH and IFS could fail is some border cases.
  • Fixed : The [TYPE]( function didn't return 128 for lambda functions.
  • Fixed : Sometimes RenderObjects would not render the images. See
  • Fixed : Some files containing khmer characters (or other complex scripts) could raise an exception when exporting to pdf.
  • Fixed : Cells with diagonal borders, but borders style set to none could be rendered by FlexCel in some cases.
  • Fixed : Bubble charts could render bubbles of the wrong size if there were empty points in the chart data with bubble size different from 0.
  • Fixed : APIMate generated some code with invalid syntax in C++.


  • New : Support for optional lambda parameters
  • New : Support for bubble charts
  • New : New CustomizeChart event for reports
  • New : New <#Swap Series> tag for reports
  • New : IsOmitted function support
  • Improved : Support for localized versions of the CELL function
  • Improved : Improved recovery mode
  • Fixed : Sometimes it was not possible to read properties from xls files.
  • Fixed : Now FlexCel will throw an exception if you try to save a chart with more than 255 series. Before this release, FlexCel would just save the file, but a file with more than 255 series crashes Excel.
  • Fixed : It was impossible to manually enter lambda formulas referring to names if [AllowEnteringUnknownFunctionsAndNames](://@api/FlexCel.Core/TExcelFile/AllowEnteringUnknownFunctionsAndNames.html) was false.
  • Fixed : APIMate wouldn't report deleted chart titles, which could lead to chart titles appearing when there was a series with a name.
  • Fixed : A horizontal fixed band in a report would insert columns if using more than the fixed space, instead of just overwriting the cells.


  • New : Support for the "Black and white" printing option in Excel
  • New : Support for office 2021
  • New : Support for Radar charts
  • New : New convenience method LoopOverUsedRange that can be used to loop over a range of cells
  • New : Ability to set the bottom row when specifying an autofilter
  • Improved : New property IsLocked in TShapeOptions
  • Improved : New properties TextHorizontalOverflow and TextVerticalOverflow in TShapeProperties
  • Improved : New overloaded version of SetObjectProperty for booleans
  • Improved : New method SetObjectProperties to set all the object properties in one step
  • Improved : New convenience properties TextRotated, TextVerticalAlignment, TextHorizontalAlignment and LockText in TShapeProperties
  • Improved : Improved legend drawing in charts
  • Improved : Android demos now use AndroidX instead of Support Library
  • Fixed : When setting an Axis position in a chart to cross in the max value with the API, the value was ignored and it always used the manual crossing point.
  • Fixed : Some hidden fills in files could be read as normal fills and so would appear if reading and saving a file.
  • Fixed : Rotation of Axis text set by the API was ignored.
  • Fixed : Background of Axis text set by the API was ignored.


  • Improved : Setup now allows to enable full RTTI
  • Improved : PowerBI Data models are now preserved
  • Fixed : [TFlexCelPrintDocument.PrintAllVisibleSheets](://@api/FlexCel.Render/TFlexCelPrintDocument/PrintAllVisibleSheets.html#tflexcelprintdocumentprintallvisiblesheets-method) wouldn't print if resetPageNumberOnEachSheet was true.
  • Fixed : In Delphi XE, XE2 and XE3 there could be issues with sheet names using accented characters. This was already working fine for XE4 or newer.
  • Fixed : GetImageProperties could return an index out of bounds when passed a valid imageindex but there were grouped images.


  • New : You can now read and write the links of a camera object
  • New : Support for RAD Studio 11
  • New : New overloads of methods for getting image information that take objectIndexes instead of imageIndexes
  • New : New methods to convert between imageindexes and objectindexes with support for grouped shapes
  • Improved : Improved loading of Excel 3, 4 and 95 files


  • New : Support for recalculation of function NUMBERVALUE
  • New : Support for SVG images embedded in xlsx files
  • New : Now when exporting to HTML and SVG, the SVG images stored inside the file will be embedded as SVG
  • New : Includes in reports can now be FIXED
  • New : Full Window management via API
  • New : Ability to set shape effects like glow or shadow with the API
  • New : Ability to link shape text to cells via the API
  • New : Ability to add chart sheets with the API
  • Improved : Improved support for Tiff and Gif images
  • Improved : Improved recalculation speed
  • Improved : Improved handling of linked text in autoshapes
  • Improved : Improved drawing of shape shadows for xlsx files
  • Improved : Improved drawing of log-chart gridlines
  • Improved : Improved HTML5 exporting
  • Improved : Comments added with the API won't include a shadow
  • Improved : Better handling of third-party xls files
  • Fixed : When using <#database.#rowcount> in expressions outside the sheet, you could get an exception.
  • Fixed : When renaming tables FlexCel wasn't renaming references in column formulas
  • Fixed : Text to autoshapes added with the API would always be left-aligned.
  • Fixed : Sometimes FlexCel could fail to parse formulas with hard-coded arrays which had strings inside.
  • Fixed : Reports using TDataSets in master-detail could get the wrong results if both master and detail had the same underlying dataset.
  • Fixed : FlexCel would not export to pdf 3rd-party files which had unreadable file properties.
  • Fixed : FlexCel could throw an exception when inserting columns in xls files with invalid external references
  • Fixed : FlexCel could throw an Exception when manually adding an autoshape to a chart that was created via the API.
  • Fixed : FlexCel could report the BOM when reading custom XML parts inside xlsx files. Now the BOM is stripped out as it should.
  • Fixed : FlexCel could crash when rendering chart labels with "Value from cells" if the range existed but was null.
  • Fixed : Excel could crash with files including charts with Soft edges effect.
  • Fixed : Conditional formats with iconsets where some values of the iconset were "No icon" could be saved wrong.
  • Fixed : Comments could lose or gain a shadow when converting from xls to xlsx or xlsx-strict. Also colors in the comments could be wrong in border cases.
  • Fixed : Better compatibility with files generated by FastReports. Excel ignores border style 0 and fill styles 0 and 1, and now FlexCel ignores those too.
  • Fixed : ApiMate would not suggest how to add a shape without borders
  • Fixed : Accessing some Conditional formats with inner borders could cause an Exception.


  • New : The property LabelValues in IDataLabel changed from TArray to TArray
  • New : TXls3DRange now supports an external filename
  • New : Support for using an expression like <#joinedtable.tablejoined.\*> to make a generic report in only one of the joined tables
  • New : Support for rendering multi-level labels in category axis
  • New : Support for legend keys in chart labels
  • New : Support for functions SINGLE, VALUETOTEXT and VALUETOARRAY
  • New : Support for functions LAMBDA and LET
  • New : Support for "Label contains Value from range" option in charts
  • New : Hyperlink Base support
  • Improved : The SKIA lib used in Linux now runs in Ubuntu 16.04 and newer
  • Improved : The <#ref> tag can now use tags in its parameters
  • Improved : New property "IsCameraObject" in TImageProperties
  • Improved : Improved drawing of x-axis in charts
  • Improved : Improved compatibility with xlsx files created by SoftMarker Office
  • Improved : Axis labels will now render with a background color if they have one
  • Fixed : When rendering xlsx charts, labels which were manually positioned would ignore the default numeric formatting.
  • Fixed : When reading structured references in Virtual Mode, there could be an access violation.
  • Fixed : There could be a memory leak when calling TFlexCelReport.ClearTables
  • Fixed : Structured references with text formatting could be saved wrong to new xlsx files.
  • Fixed : Rotated labels in charts could a little below or above from where they should go.
  • Fixed : Labels which come from cells that are formatted to show negative values in different colors show with that color in Excel, except in pie charts. FlexCel used to ignore that color, not it will display it.
  • Fixed : FlexCel would always render labels in the category axis as not "linked to source" even if they were.
  • Fixed : FlexCel would allow you to name a sheet starting with a single quote ('), and that would cause an invalid file. Now the quote at the start of the name will be replaced by a "_" as other invalid characters do.
  • Fixed : FlexCel didn't preserve or render text linked to cells in shapes inside charts.
  • Fixed : FlexCel could fail to parse a formula where the sheet name started with some Unicode characters, like for example "?MySheet"


  • New : Support for reading fonts from the disk even if the graphics library returns that information
  • Improved : Improved compatibility with invalid xls files


  • New : When copying a sheet to a different file, ImageCount in the target file would return 0 even if there were images.
  • New : Improved support for camera objects. A new property [MaxNestedCameraObjects](://@api/FlexCel.Core/TFlxConsts/MaxNestedCameraObjects.html) allows to specify how many times a camera object can recursively draw itself.
  • New : FlexCel wouldn't allow some unicode characters in 3d formulas, while Excel would allow them.
  • New : FlexCel could not read some files with deleted what-if tables.
  • Improved : Improved handling of unknown parts inside xlsx files and improved Google sheets compatibility


  • New : New syntax for ALIAS DataSets
  • New : New "COUNT" parameter in <#Aggregate> tag
  • Fixed : When inserting cell ranges with multiple rows used as data by pivot tables, the pivot table might not adapt correctly.
  • Fixed : When exporting to HTML both headers and footers would be ignored if you specified THidePrintObjects.Header, and THidePrintObjects.Footer was ignored. Now footers will work with THidePrintObjects.Footer and THidePrintObjects.Header will only hide the headers.
  • Fixed : Sometimes when copying only format from cells, and the cells had only a column or row format, the format wouldn't be copied.
  • Fixed : Some invalid third party xls files could fail to load.
  • Fixed : Now nested <#aggregate> and <#list> tags will be put in master-detail if they are related.
  • Fixed : Fixed issues with <#evaluate> tag when it evaluates recursively


  • Fixed : When adding a chart to a file via the API and immediately rendering it to PDF without saving it, the chart might not be rendered in the PDF file.
  • Fixed : Previously the last row in "X" Bands in reports was deleted before the detail bands were inserted. This could cause unwanted behavior if the details shared the same rows as the master. Now last rows in X Bands will be removed after the details are inserted.
  • Fixed : DbValue could raise Exceptions in some cases.
  • Fixed : A fixed band inside a master-detail bidirectional report would behave as non fixed.


  • New : Support for Rad Studio 10.4 Sydney
  • Improved : Improved conversion from strings to numbers
  • Fixed : Deeply nested array formulas could return N/A results in some corner cases


  • New : Support for rendering logarithmic charts
  • New : Support for Rad Studio 10.4 Beta
  • Improved : When rendering pages to PDF and PNG, if an image or chart goes over the columns or rows in a page, now it won't overflow
  • Improved : Now FlexCel won't throw an Exception if a Font folder in the PDF FontFolder path doesn't exist
  • Improved : Now FlexCel will search in c:\Windows\Fonts and %localappdata%\Microsoft\Windows\Fonts for fonts when exporting to PDF
  • Improved : Improved handling of chart gaps when there are null values
  • Fixed : Xlsm files containing macros and with sheet names starting with a number and bigger than 24 characters, could generate invalid files when saved in FlexCel.
  • Fixed : When manually installing FlexCel in Delphi XE, Delphi XE would raise an exception. Note that this is a fix only for manual installation: automatic installation worked fine.
  • Fixed : Sometimes when calling RenderObjects the border of a chart would not be exported to PDF or PNG.
  • Fixed : Now FlexCel will validate when manually setting a sheet codename, that the name is ASCII and starts with a letter.
  • Fixed : Now FlexCel will draw a maximum of 10000 ticks per axis in charts, to avoid taking too long drawing too many ticks that aren't visible anyway.
  • Fixed : Manually positioned labels in stacked bar charts were a little offset from their manual position.
  • Fixed : Leader lines in stacked bar charts were wrong when the axis was reversed
  • Fixed : FlexCel would consider a protected range title containing a "?" invalid. This would prevent it from loading files that used "?" in protected ranges.
  • Fixed : Bidirectional reports could fail to delete rows or columns in complex reports.


  • Fixed : With some combinations of Delphi versions and platforms, you could get Access Violations when opening files in FlexCel 7.5. This was caused by a bug in the way Delphi handles method inlining, and it didn't happen in previous FlexCel versions. **If you installed FlexCel 7.5, please update.**


  • New : Support for importing bullet lists when importing html
  • New : Support for calculating the upcoming XLookup, XMatch, RandArray and Sequence functions
  • New : Support for adding charts to a sheet with the API (xlsx files only)
  • New : Preserving and adapting single cell mappings in XML Maps in xlsx files
  • New : Now SetSeries and AddSeries, DeleteSeries work also in xlsx charts
  • New : New set method in the properties PlotArea, Background in ExcelChart
  • New : New methods SetTitle, SetOptions, SetChartLegend, SubchartCount, GetSeriesInSubchart, SetSeriesInSubchart and AddSubchart in ExcelChart
  • Improved : Improved compatibility with invalid third party files
  • Improved : Better chart rendering when there are date axis
  • Fixed : When rendering charts you could get an index out of bounds in some corner cases.
  • Fixed : FlexCel will ignore invalid themes when reading xls files
  • Fixed : FlexCel wasn't calculating conditional formats if the formulas defining the conditions were array formulas.
  • Fixed : FlexCel could fail to process some files where a shape had an ending coordinate smaller than the starting coordinate.


  • New : New __ALIAS postfix in named ranges allows multiple ranges to the same database
  • Fixed : When using a not standard row height for the whole sheet, FlexCel would create new rows to have automatic height, instead of having the standard row height for the sheet. This could confuse Excel.
  • Fixed : Sometimes in Android 32 or 64 bits you could get a BUS (10) error.
  • Fixed : In some corner cases charts saved by FlexCel inside xlsx files would fail to load.
  • Fixed : FlexCel will now check that font sizes saved are between 1 and 409 points. Before it would let you save any font size, and invalid font sizes would crash Excel when opening the file.
  • Fixed : Effects for an image in the background of an image could be incorrectly saved. In some cases, this could cause Excel to crash.


  • Improved : Updated to the latest version of Skia for Linux
  • Improved : The HTML engine can now parse tags
  • Improved : Support for calculating BAHTTEXT function
  • Improved : Reports can now use nested properties in Aggregates, Filters, Sort and Master-details relationships
  • Improved : Removed overload method TExcelFile.GetImage(Integer, string, TXlsImgType, TStream)
  • Improved : Now you can use report expressions that call themselves recursively, as long as the recursion converges
  • Improved : Now for reports you can set semi-absolute references in the config sheet
  • Improved : Improved recalculation speed and decreased memory usage
  • Improved : Improved compatibility with invalid xlsx files
  • Improved : Improved chart rendering
  • Improved : Android64 Support
  • Fixed : FlexCel would nor correctly read or write left and right cell borders in strict xlsx files.
  • Fixed : FlexCel was failing to render images which had an image filled background.
  • Fixed : FlexCel might not preserve comment backgrounds in xlsx files if the background was an image or texture.
  • Fixed : FlexCel could fail to open some files which didn't completely implement the xlsx spec but which Excel could open.


  • New : The <#evaluate> tag in reports can now evaluate a string multiple times
  • New : Support for semantic theme colors
  • New : Support for rendering charts inside xlsx files
  • New : Support for creating or reading xlsx files with uncompressed size bigger than 4 Gb
  • New : Support for Delphi Rio 10.3.2 including the new macOS 64 platform
  • New : New overloads for DeleteSheet allow to delete a sheet by its name or index
  • New : Most properties in TDrawingRichString are now nullable
  • New : Improved compatibility with "Autosave" in Excel 2019
  • New : GetHtmlFromCell now can add the cell formatting to the resulting string
  • New : FlexCel will now generate "faux" bold and italics when exporting to PDF
  • New : Ability to specify different fallback fonts for italic, bold or bold-italic variants when exporting to PDF
  • Improved : The Links property of TSheetSelector now is a readonly list of TSheetSelectorLink
  • Improved : Improved support for Excel themes
  • Improved : Improved rendering in iOS, macOS, Android and Linux
  • Improved : Improved drawing of patterns and conversions from xls to xlsx
  • Improved : Improved drawing of gradients and conversions from xls to xlsx
  • Improved : Improved drawing of autoshapes
  • Improved : Improved conversion between strict and transitional xlsx files
  • Improved : Improved compatibility with invalid files created by third-party tools
  • Improved : Improved compatibility when saving strict xlsx files
  • Improved : Improved bidirectional text handling
  • Improved : Function Cell("filename") now returns the filename
  • Improved : Breaking word in hyphens
  • Fixed : When using the SKIA/Android graphic stack some lines in the charts could appear not connected.
  • Fixed : When exporting a file as HTML with tabs for sheets and there were hidden sheets between sheets, the links in cells to a different tab could be incorrect.
  • Fixed : When autofitting columns with line feeds (character 10) inside, FlexCel might fail to recognize them and try to fit everything in one line.
  • Fixed : Sometimes when copying cells between files the indexed colors could be converted to similar but not equal RGB colors.
  • Fixed : Some non visual characters like "right to left mark" were exported to pdf, even when they are invisible. Now they don't show in the generated pdfs.
  • Fixed : Some hyperlinks in xls files could return an empty string when read, even if they had data.
  • Fixed : Lines with 0 width were not showing in SVG files.
  • Fixed : In html exporting, a cell which expanded over adjacent cells could cause the output to shift if there were hidden columns in the middle.
  • Fixed : FlexCel won't let you save files where tables have 0 rows of data, since that would become an invalid xlsx file. Now it will raise an exception if trying to save such file.
  • Fixed : FlexCel won't let you enter empty array members anymore, like in the formula ={1,,2} which would create an xlsx file which could crash Excel. It will also automatically remove spaces before and after the element, so the formula ={ 1, 2, 3 } will be entered as {1,2,3}. Before this version, the formula ={ 1, 2, 3 } would be considered invalid.
  • Fixed : FlexCel was not exporting correctly to CSV when using Big-Endian UTF16 encoding.
  • Fixed : Arrows in lines were not scaling when printed or exported at a zoom different from 100%.
  • Fixed : An unitialized variable when running reports could crash the report in rare cases


  • New : In Reports now you can reference tables which include dots by writing <#[db.something].field>
  • Improved : Now FlexCel won't throw an exception when reading custom properties in an xls file if the values of the property aren't defined
  • Improved : Improved compatibility with LibreOffice/OpenOffice
  • Fixed : Workaround a GDI+ bug which could cause Internal errors when using small path gradients.
  • Fixed : When rendering charts, if the axis was reversed and the labels were aligned to the right, FlexCel would render them to the left and vice-versa.
  • Fixed : The setup wasn't compiling c++ headers for Android and iOS in Rad Studio Rio.
  • Fixed : If an xlsx file contained negative offsets to a shape, FlexCel could render the shape incorrectly.
  • Fixed : FlexCel would fail to read xlsx files with formulas that contained unknown user defined functions that returned a reference type.
  • Fixed : FlexCel will now render labels in stacked charts more like Excel renders them.
  • Fixed : FlexCel will now render labels in a 100% stacked chart as the values, not the percent in the charts.


  • New : New parameter in ATLEAST tag in reports allows for the number of rows of a dataset to be multiple of a number
  • Improved : Improved rendering of TFlexCelPreview in FireMonkey in Windows when in High dpi
  • Improved : Improved handling of invalid "," in numeric formats
  • Improved : Improved APIMate
  • Fixed : FlexCelPreview wasn't working correctly in Android. Some changes in the Android API made some methods used by FlexCelPreview deprecated. Now we call the newer methods.
  • Fixed : FlexCel could fail when rendering cells with more than 32000 characters


  • New : TFlexCelDocExport now uses a different way to share files in Android
  • New : New methods SetRange3DRef and TrySetRange3DRef in TXls3DRange
  • New : Cell indent is now printed and rendered to pdf/images proportional to the print scale
  • Improved : The examples for Android show a newer way to share the documents
  • Improved : The INDIRECT function can now understand structured references in tables
  • Improved : DbValue in reports now supports fields with dots
  • Fixed : When deleting columns the data validations formulas could be adapted wrong.
  • Fixed : When a line in rich text inside a text box had a length 0 (an empty line), the font might not be preserved for that line.
  • Fixed : FlexCel considered some special characters like "°" in a name to be invalid when they are not. This could cause that opening and saving an xlsx file with names like that would make Excel crash opening the file.


  • New : Support for Delphi 10.3 Rio added
  • New : Now you can find see the call stack in circular formula references when you call RecalcAndVerify
  • New : Now there is support for calculating function RANK.AVG
  • New : New methods UnshareWorkbook and IsSharedWorkbook in ExcelFile
  • New : New method PivotTableCountInSheet in ExcelFile
  • Improved : The installer should now install anyway even if your MSBuild command line is longer than 32000 characters
  • Fixed : There could be an error when copying sheets between workbooks and the sheet copied had a shape with a gradient.
  • Fixed : The function IFNA could in very rare corner cases return #N/A if its first parameter was #N/A instead of returning the second parameter.
  • Fixed : Some xlsx files with legacy headers could fail to load.
  • Fixed : Floating point numbers that were either infinity or not-a-number were saved wrong in the files and Excel would complain when opening them. Now they will be saved as #NUM! errors. Note that this only happened if you set a cell value explicitly to Double.NAN or Double.Infinity. Formula results which were infinity or nan were already handled fine.


  • New : Support for Excel 2019
  • New : Reports now can use tables as datasources
  • New : New method to rename tables
  • New : New Debug mode for Intelligent Page Breaks
  • Improved : Better drawing of conditional formats at very low or high zoom levels
  • Fixed : When rendering a file to pdf or images FlexCel could pick the wrong normal font in very rare cases.
  • Fixed : When deleting rows in reports with multiple levels of intellignet page breaks the engine could calculate more page breaks than necessary.
  • Fixed : The function Rank.EQ was ignoring cells with errors while Excel returns the first cell with error if any cell in the range has an error.
  • Fixed : Reports in DataSets with primary keys of type GUID could throw a null reference exception if the master key didn't exist for a detail instead of outputting an empty row.
  • Fixed : Inside a <#preprocess> section of a report a <#delete row> or <#delete column> tag could end up deleting the wrong column.
  • Fixed : FlexCel wouldn't let you rename a sheet to the same name but with different upper or lower cases.
  • Fixed : FlexCel will now validate that a table isn't named the same as a defined name or vice-versa, to avoid creating invalid Excel files.
  • Fixed : Error when calculating What-If tables that had their variables in a different sheet.
  • Fixed : CountIF, CountIFs and similar xIf/xIfs functions could return ERRNA if one of the conditions was an unknown user function, instead of returning 0 as Excel does.
  • Fixed : Cell indent was not being considered when autofitting rows or columns.
  • Fixed : APIMate could report code that wouldn't compile for embedded xml content.


  • Improved : Updated Skia libraries to the latest
  • Fixed : FlexCel would fail to load "Strict Open XML files" with formulas which returned dates.
  • Fixed : FlexCel could crash when rendering xls files with rare images.


  • Fixed : the IFERROR function could give a #VALUE! error in some cases when used chained with other functions.
  • Fixed : There could be a Nullable type error when loading files with specific combo boxes.
  • Fixed : Tables with columns in more than one line could cause Excel to show an error.
  • Fixed : Formulas that referred to different files could refer to the wrong sheet on those linked files in some rare cases.
  • Fixed : FlexCel could fail to parse complex structured references in tables.


  • Improved : ApiMate now reports hidden sheets
  • Fixed : When in R1C1 mode, full ranges expanding more than 1 row or column like for example Sheet1!3:5 could be returned as Sheet1!5 only.
  • Fixed : When hiding a column without a given width and the default column width was different from the Excel default, the column wouldn't be hidden when saving as xls.
  • Fixed : There could be an error in ClearSheet with some special images.
  • Fixed : Sometimes cells formatted as "center on selection" were not rendered when exporting them to pdf or html.
  • Fixed : Improved chm help
  • Fixed : If a "rows to repeat at top" or "columns to repeat at left" range was outside the print area, FlexCel would ignore it, while Excel will use it anyway. Now FlexCel behaves like Excel and uses the repeating range even if it is outside the print area.


  • New : New overloads for methods SetCellFromString and GetStringFromCell now accept cell references
  • New : New overload for method TPartialExportStart.SaveCss which allows to save the css without the tags
  • New : Full support for reading and writing Data Connections in xlsx files
  • Improved : Improved performance with thousands of merged cells
  • Improved : Improved chart rendering
  • Fixed : There could be an error in GDI+ when exporting emf images to html
  • Fixed : The [Copy and Paste](://@samples/delphi/api/copy-and-paste/index.html) demo wasn't correctly copying the data in TEXT format. Now it shows the correct way to copy text to the clipboard.
  • Fixed : Setup wasn't generating hpp files for iOS and Android with Delphi Tokyo.
  • Fixed : Memory leak with color scale conditional formats when calling InsertAndCopyRange.


  • New : The XlsChart object now returns the 3D properties for xls charts
  • New : Now functions CUMIPMT and CUMPRINC are supported when recalculating
  • New : New methods GetTokens and SetTokens in ExcelFile allow you to parse arbitrary text
  • Improved : When wrapping text, now FlexCel recognizes different kind of unicode spaces
  • Improved : Now FlexCel preserves "new style" sheet and workbook protections in xlsx files
  • Improved : Improved Excel 95 compatibility
  • Fixed : When exporting to pdf you could get an error if a character didn't exist and fallbackfonts was empty.
  • Fixed : Sometimes when copying sheets form different files, some named ranges would not be copied.
  • Fixed : SetCellFormat with ApplyFormat could format the cells wrong if the cells were empty and there was column or row format applied.
  • Fixed : Khmer text could be rendered wrong is some rare cases.


  • New : Support for Khmer language when exporting to pdf
  • Improved : Reduced memory usage when exporting
  • Improved : Images made transparent with Excel now are converted between xls and xlsx files
  • Fixed : The round function now behaves more like Excel and not like C# in some border cases.
  • Fixed : In some invalid cases the indirect function would throw exceptions that would be later processed. While the result was still ok, those exceptions could slow down a lot recalculation in a file with thousands of formulas.
  • Fixed : In some cases after copying rows, then deleting sheets and then inserting or deleting rows, the formula bounds cache could be invalid and formulas would fail to update in the lase deleting of the rows.
  • Fixed : Formulas with intersections of a name with a 3d range would be interpreted as #name instead of the correct formula.
  • Fixed : A file with too many objects with the same name could cause an stack overflow.


  • New : New convenience methods SetCellValue(cellRef, value) and GetCellValue(cellRef)
  • Improved : Support for shape connectors in xlsx
  • Improved : Improved compatibility with invalid files generated by third party tools
  • Fixed : When calculating UDFs and there were errors in the arguments, FlexCel could in some cases return #ERRNAME! instead of evaluating the UDF.
  • Fixed : The VLOOKUP and HLOOKUP functions now support wildcards (* and ?) in search strings.
  • Fixed : Reports with [DeleteEmptyBands](://@api/FlexCel.Report/TFlexCelReport/DeleteEmptyBands.html) = TDeleteEmptyBands.ClearDataOnly would not clear text inside textboxes or hyperlinks.
  • Fixed : In some files the calculated height for items inside Forms Listboxes was too big.
  • Fixed : In some bidirectional reports with report.DeleteEmptyBands = TDeleteEmptyBands.MoveRangeUp the tag text was not erased.
  • Fixed : FlexCel failed to read custom document properties saved in UTF16.
  • Fixed : FlexCel could fail to parse some structured references in tables.


  • Fixed : Zoom was not working correctly in the TFlexCelPreviewer component. This was a regression bug introduced in FlexCel 6.18.


  • New : Support for default CryptoAPI xls encrypted files
  • New : Support for Rad Studio 10.2.2
  • New : Full support for manipulating XML Mappings in xlsx files
  • Fixed : Xlsx files with complex gradients where the stops were not sorted could cause invalid PDF files.
  • Fixed : When rendering shapes with semi-transparent gradients to PDF or SVG the gradients were exported as fully opaque.
  • Fixed : Very complex and images could cause a GDI+ error when previewing them.
  • Fixed : Textboxes with more than 8224 characters would corrupt the file when saved as xls.
  • Fixed : Rotated shapes inside groups in xlsx files could be rendered wrong.
  • Fixed : Legacy system colors in drawings inside xls files could be rendered as transparent instead of the correct color in border cases.
  • Fixed : Images made transparent with Excel tools might not preserve their transparency when saved as xlsx.
  • Fixed : Groups that were flipped horizontally or vertically weren't flipped when rendering. Objects inside were flipped, but the groups themselves weren't.
  • Fixed : Filled polygons could be exported wrong to images with the SKIA backend used in Linux.
  • Fixed : Filled polygons could be exported wrong to PDF in some border cases.
  • Fixed : Files with table slicers saved by FlexCel might not open in Excel 2013. (They already worked fine in Excel 2016, and Excel 2010 doesn't support table slicers).


  • Fixed : This release workarounds a bug in Delphi XE4 and XE5 which made FlexCel crash when rendering in those Delphi versions. If you have FlexCel 6.17.4 and aren't using XE4 or XE5, then you might skip this update.


  • New : New SubtotalDefaultEnglishString command
  • Improved : Subtotal command allows more customization
  • Improved : Better handling of URL encoding when encoding some filenames
  • Improved : Ability to read custom document properties in xls files
  • Improved : Ability to copy OLE objects between different files while using xlsx file format
  • Fixed : When copying cells from one file to another autofilters would be copied even if they were not in the range being copied.
  • Fixed : There was an error when linking **localized** projects using FlexCelReport.
  • Fixed : The **Last print time** document property wasn't read in xlsx files.
  • Fixed : In some very complex bidirectional reports with sorting in the template the fields might end up not being sorted correctly, and some might appear twice.
  • Fixed : Formulas referencing sheets which could be interpreted like a R1C1 cell reference (like "R3C5") were saved without quotes in the sheet name, and thus became invalid formulas.


  • New : New TFlxNumberFormat.PercentCount method
  • Improved : Better display of negative zero numbers


  • Improved : Improved xls chart rendering
  • Improved : Improved compatibility with invalid 3rd party xlsx files
  • Improved : Better support of machine locale formats


  • Fixed : The packages in 6.17 could cause an Access violation. If you installed 6.17 please update to 6.17.1.


  • New : Support for reading and writing Strict Open Xml files
  • New : Full Support for Excel tables in xlsx files
  • New : Ability to add autoshapes to charts
  • Improved : Support for #GETTING_DATA error in TFlxFormulaErrorValue
  • Improved : Suport for returning arrays with the INDIRECT function
  • Improved : Reduced memory usage when loading fonts for exporting to PDF
  • Improved : Now TExcelFile.RenderObject can render shapes inside groups and use an objectPath parameter to specify the name of theobject to render
  • Improved : Now FlexCel converts strings with timestamps to dates more like Excel
  • Improved : Improved perfomance in reports with thousands of hyperlinks
  • Improved : FlexCel will now preserve embedded OLE objects in xlsx files
  • Improved : Better support for comments in xlsx file in high dpi
  • Improved : All examples available in Github
  • Improved : <#row height> and tags in reports now accept expressions


  • New : User defined formats in reports
  • New : New methods TUIFont.CreateFromMemory and TUIFont.CreateFromFile
  • New : Added recalculation support for new functions
  • Improved : Support for double underlines when exporting to pdf and refactored TUIFont
  • Improved : Simplified support for signing PDFs in Windows
  • Improved : SKIA library updated to the latest
  • Improved : Now you can enter macros that refer to other files with the API
  • Improved : Now when signing PDFs, FlexCel will mark the generated files as requiring Acrobat 8
  • Improved : Improved conversion of control points in autoshapes between xls and xlsx files
  • Improved : Improved behavior of CEILING/FLOOR functions
  • Improved : FlexCel will now check names of tables are valid when you create a table with the API
  • Improved : Added a new parameter to TExcelFile.RecalcRange
  • Fixed : When the print zoom was bigger than 100% the maximum column to print could be calculated wrong.
  • Fixed : When exporting arabic rich text with multiple formats in the same cell and a scale factor different from 1 to pdf the results could have the wrong font sizes.
  • Fixed : When evaluating data validations with [CheckDataValidation](://@api/FlexCel.Core/TExcelFile/CheckDataValidation.html) introduced in FlexCel 6.15, INDIRECT functions using RC notation were evaluated wrong.
  • Fixed : When doing bidirectional reports with multiple horizontal master detail X ranges, the rows for the vertical ranges could be wrong.
  • Fixed : When a SPLIT tag was used inside a multiple master-detail relationship in a report the results could be wrong.
  • Fixed : The parameters MaxWidth and MinWidth of the <#column width> and <#row height> tags weren't working properly when autofitting. Now they work according to the docs. If you were using MaxWidth and MinWidth in or please review those tags and make sure minwidth and maxwidth are in the correct positions.
  • Fixed : Some non standard xlsx files could become invalid if you opened them and save them with FlexCel.
  • Fixed : Row() and Col() functions would return 1 when called from <#Format range> or <#Delete range> tags. Now they return the row and column of the cell where the tag is written.
  • Fixed : Error when creating fonts in SKIA and Linux


  • New : Ability to check and evaluate data validations
  • Improved : Improved unicode Bidi Algorithm
  • Improved : Improved tagging of PDF Files
  • Improved : Improved compatibility with invalid files
  • Improved : Improved bidirectional reports
  • Improved : Improved HTML5 exporting
  • Fixed : When exporting to html a merged cell which had columns or rows not hidden but with zero width or height could render wrong.
  • Fixed : When exporting files to PDF or images in iOS64 and you were using system colors (like clWindowsBackground) those colors would be wrong.
  • Fixed : Reports in Delphi XE3 or older would raise an invalid typecast exception when referencing boolean types in records or classes. This was due to a bug in Delphi and didn't affect XE4 or newer.
  • Fixed : Now you can query if a page break at row 0 exists. A page break at row 0 would mean a page break before the first row, and Excel doesn't obey it, but you might end up with such a page break when deleting rows. Now you can check if there is a page break on that row.
  • Fixed : FlexCel failed to open some encrypted Xlsx files saved in Excel 2013 or newer where the key size in the algorithm to encrypt the file was different from the key size in the algorithm to encrypt the key.


  • New : Support for Web Addins, either of Content or Task pane types
  • New : Support for Table Slicers
  • New : Support for RAD Studio 10.2 Tokyo including full Linux support
  • New : Now you can specify multiple folders with fonts when exporting to pdf
  • New : New static method `CreateKeepingAspectRatio` in `TClientAndhor` allows you to fit an image inside a range of cells maintaining the aspect ratio of the image
  • New : New method SetTable allows to modify existing Tables
  • New : New DrawBorders method in TExcelFile allows to quickly draw a border around a range of cells
  • Improved : Now <#includes> in reports will balance in the containing band
  • Improved : New documentation center
  • Fixed : When you dropped a TFlexCelPreviewer in a FireMonkey form and run the app there would be an exception while debugging in Delphi Berlin about a non existing property. While the exception was caught and the app would run normally if you continued it, now no exception is thrown at all as we adapted the properties for Delphi Berlin.
  • Fixed : When a file with dates starting in 1900 had a linked formula to another file with dates stating in 1904 the value of the dates in the 1904 file would be considered to be at 1900. Similar for a 1900 file linking to a 1904.
  • Fixed : When "Precision as displayed" was set to true in the file options, the recalculation engine could calculate some values with a different precision than the one in the cell.
  • Fixed : TFlexCelPrintDocument.PrintAllVisibleSheets could print the wrong "page n of m" headers or footers when starting to print with a page not in the first sheet being printed.


  • New : Support for losslessly rotated JPEG images
  • New : Support for drawing mirrored images when rendering
  • New : New method TCellAddress.DecodeColumn
  • Fixed : Support for reading xlsx files with custom properties with repeated names or empty names.


  • New : New method TXlsFile.AddAutoShape to add autoshapes with the API
  • Fixed : Xml declarations when writing custom xml parts could be duplicated.
  • Fixed : When autofitting a column which contained multiple lines but the cell was set to not wrap, FlexCel would consider that the cell could wrap and so end up with a smaller column width than needed.
  • Fixed : The TFlexCelPreviewer component would raise an Exception when trying to display a file.


  • New : Support for rendering Right-To-Left sheets
  • New : New static property FlexCelConfig.DpiForReadingImages
  • Improved : New static properties `TExcelFile.CompressionLevel`, `TFlexCelConfig.XlsxCompressionLevel` and `TFlexCelConfig.PdfPngCompressionLevel`
  • Improved : New method `FlexCelReport.Run(Stream templateStream, Stream outStream, TFileFormats fileFormat)`
  • Improved : New implementation of wildcard matching for all functions that use them
  • Improved : Improved right to left support for text
  • Improved : Better handling of image resolution in reports
  • Improved : Better handling of expressions or formats defined both in an included report and the master report
  • Improved : Better display of complex numeric formats
  • Fixed : When using a report as a master in a sheet name, and the detail was the same dataset filtered, FlexCel would raise a range check error.
  • Fixed : When exporting to SVG, text in controls or shapes could go a little lower than it should.
  • Fixed : When exporting to HTML with embedded SVG images, the fill colors in the SVG images would be wrong if there were gradients.
  • Fixed : When exporting to HTML and a merged cell covered hidden rows or columns, the resulting html could be wrong.
  • Fixed : When a file had "Precision as displayed" set and there were cell formats including percentage signs, the numbers might be rounded wrong.
  • Fixed : There could be an stack overflow when a camera object rendered a range of cells which included the cells where the camera object was.
  • Fixed : The formula parser would fail to detect some unicode characters as valid characters for a sheet name or named range.
  • Fixed : Report filters in the config sheet could have wrong results for some values.
  • Fixed : Now FlexCel allows names with spaces as macro identifiers when loading files. While those aren't valid names and Excel won't let you enter them directly, you can enter them with VBA code, and FlexCel was refusing to read those files. Now FlexCel will open them correctly.


  • Improved : The <#delete range> tag in reports might not work in some cases.
  • Improved : Improved performance when creating tens of thousands of names in a file
  • Improved : Improved compatibility with third party created files
  • Improved : Better drawing of labels in charts
  • Improved : APIMate will now suggest to use TSheetProtection.Create(TProtectionType.All/None) instead of TSheetProtection.Create(true/false)
  • Fixed : When copying sheets in a file, some conditional formats could raise a null reference exception.
  • Fixed : In xls files, setting SheetProtection.Scenarios and SheetProtection.Objects had the reverse effect as in xlsx files. Now xls files behave the same as xlsx files. If you are changing the protection of xls files, **review the calls to `SheetProtectionOptions.Objects` and `SheetProtectionOptions.Scenarios` as they might be reversed.** If you are saving as xlsx files, then there is no need to change anything, as xlsx already worked as expected.


  • New : While it is invalid to write a file with conditional formats or data validations with formulas that refer to other sheets, Excel can load them (but you won't be able to modify them). Now FlexCel can read those too without reporting an error.
  • New : Support for Excel tables in xlsx files
  • New : Support for Delphi Starter
  • New : New properties `FullRecalcOnLoad` and `FullRecalcOnLoadMode` in TXlsFile
  • New : FlexCel could raise an exception when deleting ranges with conditional formats.
  • Improved : Some repeated function results are now calculated only once for better recalculation speed
  • Improved : Performance improvements loading xlsx files with thousands of comments
  • Improved : Performance improvements in function calculations
  • Improved : Performance improvements in formula parsing
  • Improved : Improved rendering of numbers which don't fit inside a cell
  • Fixed : When setting a column format for many columns at the same time and reset cells true, some cells might not be reset.
  • Fixed : When deleting sheets with locally stored defined names and you had multiple references to those names in a single formula, FlexCel could fail to update the names.
  • Fixed : Now FlexCel won't let you enter formulas with unions ranges of numeric or string values. Before it would allow you to enter a formula like "=1, 2" and it would be interpreted as the union of the reference "1" and "2". Excel would read it if saved as xls, but would fail to parse the formula when saved as xlsx. So now we don't allow those formulas anymore.
  • Fixed : In form objects like checkboxes or listboxes saved by Excel 2007 in xlsx files, the resulting coordinates could be wrong if the value of the anchor took more than one cell. FlexCel would move the anchor to the next cell, but Excel just ignores the extra width or height. Note that this only applies to xlsx files saved by Excel 2007, xls files or xlsx files saved by Excel 2010 or later would be correctly read by FlexCel.


  • New : Support for converting conditional formats between xls and xlsx files
  • Improved : Support for using formulas in "Text" conditional formats
  • Improved : Removed "IsPercent" property from Iconset Conditional Format definitions
  • Improved : Perfomance improvements in pdf engine
  • Improved : Fixed small validation issues in the xml generated for xlsx files
  • Fixed : When copying cells with conditional formats from one xlsx file to another, the borders wouldn't be copied.
  • Fixed : Sometimes with very complex groups of conditional format rules, some could be ignored when exporting to pdf.
  • Fixed : Reversed iconsets were exported not reversed to pdf.
  • Fixed : C++ builder XE7 or older would raise a linker exception when compiling an app using FlexCel without packages in 32 bit.


  • New : Conditional Format support for xlsx files
  • Improved : Performance improvements in CSV exporting
  • Improved : Perfomance improvements in exporting
  • Improved : Improved C++ builder compatibility
  • Fixed : Font could be wrong in linked shapes


  • New : User Customization parts preserved in xlsx/m files
  • Fixed : Some invalid png files could cause exporting to pdf to hang.
  • Fixed : A chart with an empty array as range would throw an Exception when saving in xlsx files.


  • Improved : Controls and drawings in xlsx now are stored in the same hierarchy and a control can be below a shape
  • Fixed : Grouped shapes with more than 2,147,483,647 emus height (approximately 38,000 rows with standard row heights) would be truncated in xlsx files (xls files are always truncated anyway since that is a limitation of the file format).
  • Fixed : External links could fail to load in xlsx files in Excel 2007. (Excel 2010 and up were already ok)


  • New : Support for rendering linked images (camera tool) to pdf/html/etc
  • New : New TXlsFile.RenderCells overload which allows to render objects and borders


  • New : Support for preserving ActiveX controls in xlsx files
  • New : Support for camera tool (linked images) in xlsx files
  • New : New global variables TSmoothingMode_FlexCelDefault and TInterpolationMode_FlexCelDefault
  • New : Form controls are now read from and written to the Excel 2010 stream besides the Excel 2007 stream
  • New : Files created with NewFile will now not have printer settings, and the locale of them all will be English
  • Improved : Recovery mode can now open files with invalid format strings
  • Improved : Improved compatibility when opening invalid xlsx files.
  • Improved : Autoshapes in xls files are now rendered using the xlsx definition of them if it is stored in the file
  • Fixed : There could be an error when saving pivot cache slicers or timelines in multiple sheets.
  • Fixed : Some colors in controls or shapes in xls files could be read wrong.
  • Fixed : Some autoshapes with holes inside could be rendered as fully filled.
  • Fixed : Localized projects could fail to find FlexCel resources.
  • Fixed : In some border cases when opening and saving a file multiple times and adding the same format every time, the format could be added each time instead of detecting it already existed.
  • Fixed : Improved rendering of custom xls autoshapes
  • Fixed : FlexCel could fail to load some CSV files.


  • Fixed : When pasting as text an empty row like $D$A into FlexCel, it would raise an exception.


  • New : Support for adding horizontal scrollbars with the API
  • New : Support for ShrinkToFit attribute in cells when exporting to pdf/html/svg/images/printing/previewing
  • New : Support for Rad Studio 10.1 Berlin
  • New : New parameter `recalcBeforeConverting` added to ConvertFormulasToValues and ConvertExternalNamesToRefErrors
  • New : New parameter `convertFormulasToValues` added to PasteFromXlsClipboardFormat
  • New : New overload of TFlexCelPdfExport.ExportAllVisibleSheets taking a filename
  • New : New <#Switch> and <#IFS> tags in FlexCel reports
  • New : Full support of Hyperlinks in autoshapes in xlsx files
  • New : Full support for "Allow users to Edit ranges" in the API
  • New : Autosize of chart axis when rendering charts
  • New : <#IF> tag in reports can now omit the false section
  • Improved : The file created by TXlsFile.NewFile(n, TExcelFileFormat.v2016) now is in the Excel "January update" format
  • Improved : Performance tweaks on the codebase
  • Improved : Better performance when opening csv files
  • Improved : Better chart rendering for xls files
  • Fixed : When rendering conditional formats in xls files sometimes the background color could be ignored.
  • Fixed : When importing fixed text with blank lines, the file might not be imported on its totality.
  • Fixed : When exporting xls bar and column charts with a single data series and "Vary colors per point" = true, FlexCel was not changing the colors on each point.
  • Fixed : When copying sheets with data validations to other files, and the data validations would refer to a list in a different sheet, the data validation would be copied wrong.
  • Fixed : The constructor of TBlipFill wasn't public.
  • Fixed : TXlsFile.DpiForImages would be ignored in some metafiles.


  • New : Support for the new functions introduced in the Excel 2016 January Update
  • New : New value in TRecalcVersion: "TRecalcVersion.LatestKnownExcelVersion" will identify the file saved by FlexCel as the latest Excel version that FlexCel knows about
  • New : New property UsedZoom in TOneImgExportInfo
  • Improved : Updated the RecalcVersion for Excel 2016 to the Excel 2016 January Update
  • Improved : Now TReportValue converts automatically from an Extended floating point type
  • Improved : Improved compatibility with thid party xlsx files
  • Improved : Improved compatibility with invalid xls and xlsx files
  • Fixed : When exporting sheets with multiple print ranges, and those print ranges had different zoom (due to having a PrintToFit zoom), FlexCel could raise an error. Now, similar to Excel, it will calculate the smallest zoom needed for all the ranges, and use that in all the print ranges.
  • Fixed : Rendering of images in headers and footers in xlsx files could be wrong if the sizes in the file were in mm.
  • Fixed : Formatted tags inside autoshapes would lose their format when replaced in a report.
  • Fixed : Empty Default values in tags inside reports weren't working. So if you wrote "<#Db.SomeFieldThatDoesn'tExist;>" in a template, then an exception would be raised to tell the field didn't exist. Now it will correctly set the value to empty since it has a semicolon (;) meaning an empty default value at the end of the tag.
  • Fixed : A report without any tags in cells, but with tags inside shapes would not replaces those tags.


  • New : New properties TExcelFile.HeadingRowHeight and TExcelFile.HeadingColWidth


  • New : New static events TUIFont.FontCreating and TUIFont.FontCreated


  • New : Support for quoted column names in reports
  • New : New methods OffsetRelativeFormula and RecalcRelativeFormula in [[vcl T]]ExcelFile
  • Fixed : Xlsx files with autofilters could become invalid if you deleted the range which contained the autofilter.
  • Fixed : When <#including> subreports inside FlexCel Reports with the RC option, empty row formats would be copied to non empty row formats.
  • Fixed : VLookup and HLookup would return a match if you searched for a blank string ("") and the cell was empty. Excel doesn't return a match in those cases, and now FlexCel doesn't either.
  • Fixed : Some invalid formulas including more than one "=" sign in a not valid location, like `"=1 + =1"` didn't throw an Exception when you tried to manually enter them, and would raise the exception later when trying to save. Now FlexCel will report those formulas as invalid when you try to enter them.
  • Fixed : In some cases when opening an xls file with existing formats, and calling AddFormat for a format already present in the file, FlexCel would fail to realize the format already existed and create a new one. This could lead to having more formats than the number allowed by Excel if you opened a file, added existing formats and save it a lot of times.
  • Fixed : Double bordered lines could render wrong when the zoom was big (about 200% or more)
  • Fixed : DISTINCT tag in Reports could fail in Delphi 64 bits.
  • Fixed : Components in the palette would show only as Win32compatible for Delphi XE6 or newer, even if they were compatible with all platforms. Now they show correctly
  • Fixed : Bidirectional reports could fill some wrong cells when using multiple master-details in the rows.
  • Fixed : ActiveX controls with a size larger than an Int32 would raise an Exception when loading.


  • New : New JOIN and UNION commands for reports
  • Improved : ReportConverter will now convert mutliple ranges in v3 to JOIN tables in v6
  • Improved : Improved preservation of timelines in xlsx
  • Improved : Improved bidirectional reports
  • Fixed : Fixed order of records specific for Excel 2010 to workaround a bug in Excel 2010. Some very complex files could raise an error when opened in Excel 2010, even when they were correct by the xlsx spec.


  • New : New property XlsFile.DocumentProperties.PreserveModifiedDate
  • New : Improved support for C++ builder FMX
  • New : Improved setup
  • New : Improved Getting Started document
  • New : Copy to the clipboard now supports html
  • New : Changed default fallback fonts in pdf
  • New : Bidirectional Reports
  • Improved : The tags <#List>, <#DbValue> and <#Aggregate> can now work inside nested Array/Linq datasets
  • Improved : FlexCelFormatSettings methods now need a "Locale String" as a parameter
  • Improved : FlexCel will now set the creation and modification date in xls files too
  • Improved : FlexCel will now allow you to set the file creator for xlsx files
  • Fixed : Nested <#aggregate> or <#list> tags could fail for reports using TDataSet as datasources.
  • Fixed : Macros converted from xls files to xlsx could fail to open in Excel 2016 in some border cases.
  • Fixed : LastModifiedDateTime wasn't returned correctly for xlsx files.
  • Fixed : FlexCelPreview could get too slow if you had thousands of merged cells.


  • New : Support for new Excel 2016 features
  • New : New methods XlsFile.SheetID and XlsFile.GetSheetIndexFromID
  • New : Center across selection cells are now exported to html
  • Improved : Slicers for Pivot Tables are now preserved in xlsx
  • Improved : Now FlexCel can open xlsx files with images with the wrong image type
  • Improved : Improved support for DataValidations that have lists with cells from other sheets
  • Improved : Improved exporting of superscripts and subscripts to html
  • Improved : Improved =RoundUp and =RoundDown compatibility with Excel
  • Improved : Improved installation speed
  • Improved : Full support for formulas attached to textboxes or autoshapes
  • Improved : Excel 2010 equations are now preserved in xlsx
  • Fixed : Xlsx files with 0 bytes xml files inside could throw an "Invalid XML file" error.
  • Fixed : Reports could fails with some combination of format row tags
  • Fixed : Improved compatibility with third party tools
  • Fixed : FlexCel could fail to load the recalculated value of formulas whose result was an empty string in xlsx files.
  • Fixed : Error when deleting rows in a pivot table
  • Fixed : Data validations entered manually in xls files could fail to work when opened in Excel


  • New : Two new modes for PDF files PageLayout
  • New : Support for opening xls versions from 2 to 4
  • New : Rad Studio 10 Seattle support
  • New : Property Resolution in FlexCelPreview has been removed
  • New : New property for PDF files: PageLayoutDisplay
  • New : New property for PDF files: InitialZoomAndView
  • New : New property ScreenScaling in XlsFile
  • New : Full support for manipulating Custom XML parts with XlsFile
  • New : Full support for background images in a sheet
  • New : C++ builder support for Android and iOS
  • New : Ability to <#insert> empty names in reports
  • Improved : SPLIT Datasets in Reports can now be used as datasets for sheets
  • Improved : New property ExportEmptyBands in FlexCelReport
  • Improved : New overload for XlsFile.DeleteRange
  • Improved : Mobile demos for XE8 were separated from XE7
  • Improved : Improved lookup tag in reports
  • Improved : Improved compatibility with invalid xlsx files generated by third parties
  • Improved : Enhanced High DPI Support in FlexCelPreview
  • Improved : Better handling of stored numbers in xlsx
  • Fixed : Xlsx files with external formulas referring to other sheets starting with a number weren't quoted, and Excel would report an error when opening those files.
  • Fixed : XlsFile.SetAutoRowHeigth wouldn't work if the row was empty.
  • Fixed : When rendering a chart with an image inside, there could be an exception.
  • Fixed : When inserting or deleting columns, array formulas located in other sheets might not update to take in account those changed rows or columns.
  • Fixed : When exporting to bitmaps, the bitmaps where a little bigger than the page size
  • Fixed : The tag <#db.*> wasn't working in reports from TList<> . Now <#db.*> will only output public or published properties of the class, not the methods.
  • Fixed : The lookup tag introduced in 6.6.32 could fail if the lookup value was a tag in the template
  • Fixed : The functions SumIfs, AverageIfs and CountIfs could give wrong results in some cases.
  • Fixed : Tabs inside text in autoshapes now will render as 8 spaces. (note that we don't use the tab definitions from the autoshape, so this is an approximation)
  • Fixed : TUIImage.ToNativeImage didn't work in FireMonkey.
  • Fixed : Subtotal function could recalculate wrong in border cases.
  • Fixed : Sometimes when moving a range array formulas which pointed to that range might fail to update.
  • Fixed : Sometimes the TFlexCelPreviewer component could show wrong borders when showing all sheets.
  • Fixed : Some functions with array arguments could not be calculated correctly when the formula was not an array formula.
  • Fixed : Now scatter charts behave like Excel, and if any of the x-axis values is a string, it will be rendered as a line chart instead.
  • Fixed : Now FlexCel will make sure the xml declaration in the custom xml parts added with AddCustomXmlPart have the same encoding as the encoding being used to store the file.
  • Fixed : In some cases when generating reports and exporting them to pdf directly without saving them as xls/x, there could be a range check error.
  • Fixed : Implemented a workaround for bad GDI+ header files in Delphi which could cause crashes in 64 bit. Now you need to pass a NativeInt (or ULONG_PTR) instead of a Cardinal (or ULONG) to FlexCelDllInit and FlexCelDllShutdown, if you are using those methods.
  • Fixed : Images inside charts with negative coordinates weren't rendered.
  • Fixed : FlexCel would fail to load files with formulas which pointed to tables in other files with the new table formula syntax.
  • Fixed : ExportEmptyBands introduced in 6.6.25 wouldn't work in detail reports.
  • Fixed : Copy to clipboard wasn't working in Excel 2013
  • Fixed : Chart rendering now respects the label positions next to axis, high and low.
  • Fixed : Chart rendering now renders charts where all values are 0.
  • Fixed : Added workarounds for bugs in XE8 iOS64 compiler. Some things weren't working properly in iOS 64 bits.


  • Improved : Setup now warns if the Android SDK isn't installed in XE8
  • Fixed : There could be an error when rendering error bars in charts and there were missing values.
  • Fixed : Delphi resource compiler could fail to build localized apps when using FlexCel.


  • New : iOS 64 bit support
  • New : XlsFile.AddImage(row, col, TUIImage) now takes in account the declared image dpi
  • New : TXlsNamedRange.GetRanges is now public and documented
  • New : Rendering of error bars in xls charts
  • New : Rad Studio XE8 support
  • New : New property SheetView in XlsFile allows you to set the page view mode and zoom for each mode
  • New : New property LinksInNewWindow for FlexCelHtmlExport and FlexCelSVGExport
  • Improved : Links to local files and to current workbook are now exported in TFlexCelHtmlExport
  • Improved : Improved display of markers in charts
  • Improved : Improved display of line charts
  • Fixed : XlsFile.FillPageHeaderOrFooter could return an extra "&" character at the end in some cases.


  • New : Now FlexCelDocExport is compatible with C++ builder
  • New : New parameters in FlexCelPdfExport.AfterGeneratePage and BeforeGeneratePage events
  • New : New method XlsFile.RemoveUserDefinedFunction
  • New : New UsePrintScale property in FlexCelHtmlExport
  • New : New "Features" demo for reports
  • New : Improved RecoveryMode
  • New : Fixed memory leak in FlexCelReports that happened when some Exceptions were raised
  • New : Fixed linking in C++ builder 32bits when using FlexCelReport and not runtime packages
  • Improved : When drawing xls charts, we now use the options for not plotting empty cells
  • Improved : Now when drawing chart labels that have N/A! error as result, FlexCel won't draw them
  • Improved : Improved Setup
  • Improved : Improved APIMate
  • Fixed : Sometimes FlexCel could fail to load an xlsx file with different images with the same extension but different case (like image1.png and image2.PNG)
  • Fixed : Some JPEG images weren't recognized as such.
  • Fixed : Reports might not read expression values when tags had a default value, like <#value;0>
  • Fixed : In some cases, when pasting a file with autofilters from Excel you could get a range error. This is because Excel copies the filter in its totality and part of the filter might be outside the range copied. Now FlexCel will resize the autofilter if it extends beyond the copied range.
  • Fixed : FlexCelReport might not filter datasets in the config sheet when they were the master.


  • New : XlsFile.RecalcForced and FlexCelReport.RecalcForced properties have been removed
  • New : Support for recalculating 31 new functions introduced in Excel 2013
  • New : Subtotal command in XlsFile
  • New : New property ExcelFile.AllowEnteringUnknownFunctionsAndNames
  • New : New properties XlsFile.RecalcVersion and FlexCelReport.RecalcVersion
  • New : New properties TFlxConsts.MaxRowCount and TFlxConsts.MaxColCount
  • New : New overloads of XlsFile.GetObjectProperties and XlsFile.GetObjectAnchor that take an object path
  • New : New option "ExcelLike" in XlsFile.Sort
  • New : New methods IsRowMarkedForAutofit and IsColMarkedForAutofit in XlsFile
  • New : New convenience constructor for XlsFile which takes a Stream
  • Improved : Unknown names in formulas now return #NAME! instead of #NA!
  • Improved : Sheet names aren't always quoted when returning formula text
  • Improved : Pivot tables in xlsx are now copied when you copy sheets
  • Improved : Included reports can now reference the formats of the parent report
  • Improved : Improved error message when opening files with 0 bytes
  • Improved : Improved compatibility with invalid xls files
  • Improved : Improved C++ Builder support
  • Fixed : When using an user defined function twice with a FlexCel Report, the memory would be freed twice.
  • Fixed : When setting the text of an object using SetObjectText the font might not be preserved.
  • Fixed : When changing the font in HtmlFont event in TFlexCelHtmlExport there could be an Exception.
  • Fixed : RoundUP and RoundDown functions could return the same number and not the rounded up number in some cases when the number of digits was negative.
  • Fixed : Rendering some files with thousands of hidden columns could take too long.
  • Fixed : Hidden rows could sometimes count when finding the maximum used column in the sheet
  • Fixed : Autofitting columns with 90 degree rotation would work always as if the column had "Wrap text" enabled


  • New : FlexCelPrintDocument now suports FireMonkey in Windows
  • Improved : Improved ReportConverter
  • Improved : Better support for TList in reports
  • Improved : Better rendering of text in rotated shapes
  • Fixed : XlsFile.SetCommentRow could set the wrong comment in some cases.
  • Fixed : Exporting "Center on selection" cells could be too slow in border cases.
  • Fixed : A local link in a pdf to a page that wasn't exported could cause an Exception.


  • Improved : Generic reports using <#table.*> can now use user defined functions
  • Improved : Generic reports using <#table.*> can now reference fixed fields in the table
  • Improved : Better compatibility with files created by third parties
  • Fixed : Setup could fail to install if you only had C++ Builder and not Delphi installed.
  • Fixed : Generated xlsx files could be invalid when removing frozen panes from an existing file.


  • New : Reports
  • New : New MigratingFromFlexCel3.pdf document
  • Improved : Support reading the number of horizontal and vertical page breaks in a sheet
  • Improved : Support for reading and writing a cell's text direction (RTL, LTR or Context)
  • Improved : Now the result of ShapeOptions.Text is a TDrawingRichString instead of a TRichString
  • Improved : Better support for preserving autoshape text in xlsx
  • Fixed : XlsFile.LastFormattedCol returned the last formatted column - 1. Now it is returning the correct number.
  • Fixed : When copying a range of cells to another sheet which included formulas introduced in Excel 2007 or newer there could be an error when saving as xls.
  • Fixed : Rendered xls charts could show an extra line in some corner cases with missing data.
  • Fixed : New unit FlexCel.Core to make easier to share VCL/FireMonkey code
  • Fixed : New Setup doesn't modify system path
  • Fixed : Macro references in buttons could be copied wrong when copying sheets.
  • Fixed : FlexCel would fail to read CDATA sections in tags written by third party tools.
  • Fixed : FlexCel enforced a maximum of 1023 manual page breaks for xls but not for xlsx. Now We also check that the generated xlsx files don't have more than 1023 manual page breaks, since that would crash Excel.


  • New : TFlxApplyFont as a new StyleEx property that allows for fine control of which styles are applied
  • New : Rad Studio XE7 Support
  • New : PDF/A support
  • New : PDF properties are now saved in XMP format
  • New : Now if you don't specify properties for pdf files in FlexCelPdfExport (like Author, Title, etc.), those will be read from the Excel file being exported
  • New : New structure StandardMimeType returns the mime types for xls, xlsx, xlsm, pdf, etc
  • New : New enumeration TExcelFieFormat.v2013
  • New : New constructor for XlsFile allows to specify the Excel version in one step
  • New : Generated PDF files now embed the fonts by default
  • New : Generated PDF files are now tagged by default
  • New : Generated PDF files are now compatible with Acrobat 7 or newer
  • New : FlexCel will throw an Exception when trying to embed a font that doesn't have a license allowing embedding
  • New : Ability to set the language of the PDF files
  • New : Ability to preserve modification date in xlsx files
  • New : Ability to embed files inside the PDF
  • New : Ability to embed a Color Profile inside the generated pdf files
  • Improved : iOS and OS/X previewer compatibility improved
  • Improved : XlsFile.Sort does a stable sort
  • Improved : Support for space (" ") named styles
  • Improved : Support for format strings that specify fractions
  • Improved : Support for entering names referring to other files using Excel notation
  • Improved : Support for UTF16 surrogates when exporting to pdf
  • Improved : Shapes inside charts are now preserved in xlsx files.
  • Improved : Now when adding controls with linked cells, the linked cells will be modified to match the initial value of the control
  • Improved : Improved Search and Replace
  • Improved : Better support for Excel 4.0 macro sheets
  • Fixed : XlsFile.Replace might not keep existing cell formats when replacing dates.
  • Fixed : When replacing rich strings, the rtf runs could be wrong in border cases.
  • Fixed : There could be an exception when deleting some ranges of cells with hyperlinks.
  • Fixed : Some xlsx files with charts could enter an infinite loop when loading.
  • Fixed : Some files could trigger an AV when deleting comments.
  • Fixed : Local named ranges could lose their sheet when inserting sheets from other file.
  • Fixed : Improved image rendering
  • Fixed : Chart.DeleteSeries could break the format of the remaining series when called in a serie at the middle of the chart.


  • New : TExcelChart.RemoveLegend method
  • New : SVG images in HTML files
  • New : SVG Exporting
  • New : Rad Studio XE6 Support
  • New : HTML 5 Exporting
  • New : Embed images in HTML files
  • Improved : Improved support for document properties
  • Improved : Improved performance in pdf/html exporting
  • Improved : Improved performance in VLookup
  • Improved : Improved chart rendering
  • Improved : Improved APIMate
  • Fixed : XlsFile.Find could keep returning the same values in corner cases.
  • Fixed : When Inserting an empty sheet locally defined ranges wouldn't update the sheet where they were defined. This happened only with empty sheets, if you inserted a sheet with data it would work fine.
  • Fixed : Some cells with automatic background colors in xls files could be saved with the wrong color when converting to xlsx.
  • Fixed : FlexCelPreview could show text as underlined in some third party generated xlsx files.


  • New : Support for running in machines with FIPS 140 enabled
  • New : Support for preserving PowerPivot tables in xlsx
  • New : Support for displaying numbers in Engineering notation
  • Improved : SheetProtection is copied when copying sheets from one file to another
  • Improved : New methods FlexCelDllInit and FlexCelDllShutdown
  • Improved : Improved rendering of formatted numbers
  • Improved : Improved handling of dates between 1900-1-1 and 1900-2-28
  • Improved : Improved default font in Headers and footers
  • Improved : Improved Excel 2013 support
  • Improved : Improved 3rd party compatibility
  • Fixed : When opening xls files with data validations and saving them as xlsx, some relative ranges could point to an incorrect cell range in the xlsx file.
  • Fixed : There was an error when recalculating the =LARGE and =SMALL functions in non contiguous ranges of cells.
  • Fixed : The rendering engine could fail to draw the top gridline in pages after the first when PrintGridLines was true and you were repeating rows at the top.
  • Fixed : Sometimes AddFormat() could repeat a format twice in the file.
  • Fixed : In certain cases when a macro name had a dot "." on it, FlexCel could fail to open the file.
  • Fixed : GDI+ could fail to work in Windows Server 2008 R1, due to a bug in the VCL.
  • Fixed : Charts in xlsx files didn't preserve textures.


  • New : Support for writing codepages
  • Improved : C++ builder support
  • Fixed : Bug with autofilters


  • New : XE5 support
  • New : Support for forcing codepage in Excel95
  • New : Support for Android platform for FireMonkey applications
  • New : Static events in TPDFWriter: GetFontDataGlobal, GetFontFolderGlobal, OnFontEmbedGlobal
  • Improved : Some records in .XLSX files have been changed so the iOS7 viewer can show the files
  • Improved : Rendering in iOS, Android. Texture bitmaps are supported on all platforms now
  • Improved : Chart rendering
  • Improved : .XLSX autoshape rendering and conversion


  • New : Ability to autofit part of a column or a row
  • Improved : Preformance tweaks, bug fixes, small improvements.


  • New : XE4 and iOS Support
  • Improved : Reduced Memory usage. FlexCel 6 will use from about 1/2 to 1/4 of the memory FlexCel 5 used
  • Improved : More conformant xls files. All xls files created by FlexCel now pass the Microsoft Office validator if the original file passed it.
  • Fixed : Many smaller fixes and improvements


  • New : XE3 Update 1 support
  • New : Support for recalculating XIRR and XNPV functions
  • Improved : Significantly reduction in the sizes of applications which use FlexCel.
  • Improved : Performance enhancements in different places


  • New : Excel file previewer added for FireMonkey
  • Fixed : Many smaller fixes and improvements


  • New : Support for reading and writing encrypted .XLS and .XLSX files
  • New : Support for Office 2013 .XLSX
  • New : Support for FireMonkey 2.0
  • New : Support for Delphi XE3 & C++Builder XE3 added
  • New : Native previewing of .XLS and .XLSX files (in VCL)
  • New : Native exporting of .XLS / .XLSX files to a fully standards compliant HTML file
  • New : Native exporting of .XLS / .XLSX files to PDF. Export is 100% native, not third party dlls, Excel or Acrobat are needed.
  • New : Native built-in printing support of .XLS / .XLSX files (in VCL)
  • New : Intelligent page breaks (to keep relevant parts together when printing)
  • New : Autofitting suport. Flexcel can autofit rows and columns in any .XLS and .XLSX file


  • Improved : Compatibility improvements for Delphi XE2 hotfix 1
  • Fixed : Various small bug fixes


  • New : ApiMate tool for Delphi/C++ Builder that can open any existing .XLS/.XLSX file and show Delphi or C++ code needed to create that file with FlexCel.
  • Improved : Reading in Virtual Mode is significantly faster


  • New : Now FlexCel can natively recalculate the files, with support of over 200 functions.
  • New : Added support for TXlsxAdapter component for using FlexCel 5 from FlexCel 3. TXlsxAdapter allows you to use a v3 FlexCelGrid with recalculation and xlsx support.


  • New : Support for C++Builder XE2 added


  • New : Support for Excel 2007/2010 colors,checkboxes, comboboxes, array formulas, HTML, extended range of rows & columns, ...
  • New : Support for 1048576 rows and 16384 columns.
  • New : Support for .XLS, .XLSX, .XLSM file formats
  • New : Completely rewritten codebase that will over coming releases have full feature parity with Flexcel .NET


  • Fixed : Bug that could cause a deadlock in threaded applications when autofitting rows or columns.


  • New : New: RAD Studio XE2 support


  • Improved : Performance optimizations
  • Improved : Display of rich text in FlexCelGrid
  • Fixed : Workarounded BCB linker bug that could cause problems when using C++
  • Fixed : Bug in the xls parser for complex files
  • Fixed : Bug in FlexCelImport.ColByIndex


  • New : RAD Studio XE support


  • New : Property "CenterredPreview" in FlexCelPreview to center the document in the win


  • Fixed : Small issues fixed


  • New : Support to make Flexcel generated XLS files compatible with Excel 2010 protected mode view


  • Improved : Improved import of currency and percent values


  • New : Support for Delphi 2010 & C++Builder 2010


  • Improved : Installer path management.
  • Improved : FlexCelDesigner
  • Improved : AdvStringGrid import support
  • Fixed : Some unicode string were lost when working with Delphi versions less than 2009
  • Fixed : Some formulas would raise a "data might have been lost" warning when opening the files in Excel.
  • Fixed : FlexCel could fail to find files stored in TemplateStore. Some formula fixes


  • New : RAD Studio 2009 support. Optimized for Delphi 2009 to use generics and UnicodeString
  • New : Online documentation
  • New : Native XLS filesystem. The XLS filesystem has been fully rewriten in native pascal code, making it faster and also usable from any operating systems without any third party dlls
  • New : Lazarus/FPC support. FlexCel now can be installed in Lazarus, and run on Linux, Mac OSX or be compiled for Win32, Win64
  • New : FlexCel Designer. The new FlexCelDesigner doesn't embed Excel as the previous version did making it much more robust
  • New : Easier fully automatic setup
  • New : Completely rewritten Documentation and Demos to provide an easier learning curve
  • Improved : Lots of small improvements and bug fixes. Added support for Autofilters in FlexCelImport. FlexCelReport can now run a report from a stream. New methods ToOADate and FromOADate to make easier to work with 1904 dates. Syntax "=A:B" or "=1:2" to reference full rows or columns is now supported when entering formulas. And much more.
  • Please see product documentation for breaking changes for v2.x users!


  • Improved : Several performance improvements were done for reading XLS files
  • Fixed : Issue with loading nested charts


  • New : Support for displaying Addin functions in cells
  • Improved : Rendering of numeric formats: Now conditions like [>10] inside a numeric format will be displayed by FlexCelGrid. Localized dates (New in Excel XP) are also displayed now
  • Fixed : Various smaller bug fixes & code improvements


Single Developer License Site License

TMS FlexCel for VCL & FMX

€ 210

65 yearly renewal
license for 1 developer

check  Full source code
check  Access to the TMS Support Center
check  Free updates and new releases

TMS VCL Subscription

€ 895

450 yearly renewal
license for 1 developer

check  Full source code
check  Access to the TMS Support Center
check  Free updates and new releases
check  TMS FlexCel for VCL & FMX
check  All TMS VCL products
more_horiz  Discover more


€ 1,795

575 yearly renewal
license for 1 developer

check  Full source code
check  Access to the TMS Support Center
check  Free updates and new releases
check  TMS FlexCel for VCL & FMX
check  All TMS VCL products
check  All TMS products
more_horiz  Discover more
All prices excl. VAT. Renewal price is subject to change and only valid up to 30 days after license has expired. After renewal period a discount price is offered to renew the license.


Get unlimited access to all TMS products
One money and time saving bundle

Free Trial

Start a free TMS FlexCel for VCL & FMX evaluation today!
RAD Studio

What our customers say

We had a very positive Flexcel talk in our meeting yesterday. Dave Martel was very positive about the product; the support; speed to fix an issue. By doing the talk he realised improvements over the years and has an amazing success story from analysing a large number of human created spreadsheets (1000’s of spreadsheets with 1000’s of readings). The speed of analysis allowed them to refine and re-train the importer to deal with human vagaries (comments / colour etc).

- Jason Chapman

Wow, I'm really impressed that you found this out in such a short time! Thanks especially for testing it with Softmaker Office itself and with some more elaborate spreadsheets, this makes me confident that it'll work with the "real life" files that I have to handle. Super service!

- Arthur Hoornweg

It's now very easy to build a report with the new Flexcel + Aurelius integration. It was so easy that I really thought I was doing something wrong. I will never go back to a report generator, Flexcel is way cooler and easier for reports

- Eduardo Elias

Another vote for Flexcel here, since the rewritten and updated Flexcel came out a year or two ago, I only use that. Mostly I use it to read XLS and XLSX files, which it does much faster and more flexibly than Excel automation, in my experience. If you also need to write XLS and XLSX files (which I do occasionally) Flexcel has the most amazing utility named 'ApiMate'. You can design your output report in Excel, including only a minimum of actual data, but with all the detailed formatting, headings, and column, row and cell properties you need. Then point ApiMate at the Excel file, and it generates a Delphi program to write the entire XLS file using the Flexcel API, with all the attributes matching those you created in Excel itself. It is then the work of a few moments to adapt the ApiMate-created functions to handle your real data. Magic! Flexcel support is prompt and helpful, too.

- Tim Frost

Thanks for an excellent product. I did have some issues Friday but these were expertly solved by Adrian Gallero over the weekend. I cannot recommend you products and service high enough. Thanks and kind regards

- Kevin Clegg


Create modern web apps in Delphi & VSC
Use Object Pascal code to build JavaScript apps