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 : Updated SKIASharp
  • New : Support for creating your own cultures when rendering Excel files
  • New : Support for .NET 8
  • Improved : Removed canvas.getMatrix calls in Android as they are deprecated
  • 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 : 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 : FlexCelPreview now is available for .NET 6+ Winform apps
  • New : FlexCel can now render error in formulas according to the printer settings
  • New : FlexCel can now render comments "As displayed"
  • 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 : Removed support for .NET Core 3.1 and 5.0
  • New : Optimized support for .NET 7
  • New : Now FlexCel preserves digital signatures in macros
  • New : New property DeleteEmptyBandsFixed in FlexCelReport controls what to do with empty fixed bands
  • New : Improved API for defining columns in tables
  • Improved : SkiaSharp updated to 2.88.3
  • 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


  • New : The default for the GraphicFramework property is now Native
  • New : Support for using native graphics engine in .NET 6 for Android, macOS and iOS
  • New : Support for using .NET 6 directly in iOS and Android, instead of Xamarin
  • Improved : Support for different numeric systems in cell formatting
  • Improved : SkiaSharp updated to 2.88.1
  • 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 : 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 List like List
  • 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 : FlexCelReport.AddConnection now supports adding IDbCommand directly
  • 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.


  • New : Support for optional lambda parameters
  • New : Support for bubble charts
  • New : Removed support for .NET framework 2.0
  • 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
  • Improved : Improved floating point handing in .NET Core 3.0 or newer, .NET 5 or newer
  • 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/ExcelFile/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 : Support for .NET 6
  • New : Removed support for .NET Core 2.1
  • 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 : In iOS or Android you could get an error when saving files
  • Fixed : Background of Axis text set by the API was ignored.


  • Fixed : Workarounded bug in SkiaSharp: We also now require a minimum of SkiaSharp 2.80.2 instead of 2.80.3, since 2.80.2 doesn't has the bug.


  • Improved : PowerBI Data models are now preserved
  • 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 .NET 6 and Visual Studio 2022
  • 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 : SkiaSharp updated to 2.80.3
  • 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 : 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 : Accessing some Conditional formats with inner borders could cause an Exception.


  • 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
  • New : Deprecated Android support in Visual Studio 2017
  • 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, the structure reference text would be wrong since it wasn't calculated until after the sheet was loaded.
  • 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 switching Graphics engines in .NET Core or .NET 5
  • New : Support for reading fonts from the disk even if the graphics library returns that information
  • New : Removed support for .NET Core 2.0 and 3.0
  • New : .NET 5 Support
  • Improved : Improved performance in the SKIA graphics backend for .NET 5
  • 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 : SkiaSharp used by .NET Core updated to 2.80.2
  • 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


  • New : SkiaSharp used by .NET Core updated to 1.68.3
  • 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 : A fixed band inside a master-detail bidirectional report would behave as non fixed.


  • 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 : SkiaSharp used by .NET Core updated to
  • 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 : 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.


  • 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 : Support for .NET Core 3.1
  • New : Removed support for .NET Core 1.0 and .NET Standard 1.5
  • 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 : The report designer failed to start.
  • 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.


  • New : Support for .NET Core 3
  • 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
  • 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 : UWP Support updated to version 6
  • 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 Visual Studio 2019, .NET Framework 4.8 and .NET Core 3 preview
  • New : Removed FlexCel-Portable for windows 8.1
  • 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 for .NET core would fail to create PDF/A files.
  • Fixed : Arrows in lines were not scaling when printed or exported at a zoom different from 100%.


  • New : In Reports now you can reference tables which include dots by writing <#[db.something].field>
  • Improved : SkiaSharp used by .NET Core updated to v1.68
  • 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 : 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 : 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 handling of invalid "," in numeric formats
  • Fixed : FlexCel could fail when rendering cells with more than 32000 characters


  • 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 : Updated minimum Required Android version to 8.0 Oreo
  • New : Support for calculating function RANK.AVG
  • New : Now you can find see the call stack in circular formula references when you call RecalcAndVerify
  • New : New methods UnshareWorkbook and IsSharedWorkbook in ExcelFile
  • New : New method PivotTableCountInSheet in ExcelFile
  • 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 : 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 SkiaSharp to 1.60.3
  • 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 : 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


  • 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 : Updated the SkiaSharp library used in .NET Core to the latest
  • 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.


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


  • New : Support for default CryptoAPI xls encrypted files
  • New : Full support for manipulating XML Mappings in xlsx files
  • Improved : Updated SkiaSharp to 1.59.2 for .NET Core
  • Fixed : in .NET Core 2.0 Exceptions thrown by FlexCel would display the message *'Secure binary serialization is not supported on this platform'* instead of the actual error message.
  • 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 : 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 .NET Core and Android.
  • 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).


  • 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 : The **Last print time** document property wasn't read in xlsx files.
  • Fixed : Modified and creation time were read in UTC, but saved in local time which would result in a different date being saved back. Now it is all handled in UTC.
  • 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 : iOS demos updated to require iOS 8 or later so they can be compiled with XCode 9
  • 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


  • New : Support for reading and writing Strict Open Xml files
  • New : Support for .NET Standard 1.5, 2.0 and .NET Core 2.0
  • 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 : 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 : Examples and demos now use SQLite
  • 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 : Setup wasn't correctly registering the .NET 4 and newer assemblies in Visual Studio, so those wouldn't appear in the "Add reference" dialog as Extensions. (They were still available if you browsed for them)
  • 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.


  • 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 : 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 .NET 4.7
  • New : Official support for .NET Core including graphics
  • 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
  • Improved : Improved Setup
  • Improved : Deprecated Xamarin Components
  • 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 : In some rare cases when changing a style an exception could be thrown.


  • New : Support for losslessly rotated JPEG images
  • New : Support for drawing mirrored images when rendering
  • New : Support for Visual Studio 2017 RC
  • New : Support for .NET Core 1.1
  • New : New method TXlsFile.AddAutoShape to add autoshapes with the API
  • New : New method TCellAddress.DecodeColumn
  • Fixed : Xml declarations when writing custom xml parts could be duplicated.
  • Fixed : When replacing hyperlinks in a shape with a report there could be an exception.
  • 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 : Support for reading xlsx files with custom properties with repeated names or empty names.


  • 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 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 : 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.
  • Fixed : In .NET Core we could fail to read formulas


  • Improved : Improved performance when creating tens of thousands of names in a file
  • Improved : Improved compatibility with third party created files
  • Improved : Improved compatibility with Windows Phone devices
  • 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 : 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 : 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.


  • New : Removed "classic" OSX and iOS components for Xamarin
  • New : Conditional Format support for xlsx files
  • Improved : Performance improvements in CSV exporting
  • Improved : Perfomance improvements in exporting
  • Fixed : Font could be wrong in linked shapes


  • New : User Customization parts preserved in xlsx/m files
  • Improved : Support for latest version of Xamarin Android
  • Fixed : Some invalid png files could cause exporting to pdf to hang.
  • Fixed : Fixed issues with resources in .NET Core
  • 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 : 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


  • New : Added support for .NET Core RC2
  • Fixed : Some xlsx files manually edited could fail to load in .NET 2, 3.5, pcl or .netcore.
  • Fixed : Fixed error when exporting images to pdf in UWP 10 apps.


  • New : Support for adding horizontal scrollbars with the API
  • New : Support for Windows 10 Universal Apps
  • New : Support for ShrinkToFit attribute in cells when exporting to pdf/html/svg/images/printing/previewing
  • 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 : Better chart rendering for xls files
  • Fixed : When rendering conditional formats in xls files sometimes the background color could be ignored.
  • 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 : 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 : COLUMNS DataSet would not work inside a filter.


  • 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 ExcelFile
  • New : Experimental support for .NET Core 1.0 and ASP.NET Core 1.0
  • 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 : 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 : 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 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 : 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 : 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.


  • New : Support for new Excel 2016 features
  • New : New static property "UseLegacyLookup" in FlexCelReport
  • 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 : Full support for formulas attached to textboxes or autoshapes
  • Improved : Excel 2010 equations are now preserved in xlsx
  • Fixed : Improved compatibility with third party tools
  • 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 : 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 : 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 : 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 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 : 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 : Some functions with array arguments could not be calculated correctly when the formula was not an array formula.
  • Fixed : Reports using LINQ could raise an Exception in some cases with null values.
  • 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 : 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.


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


  • New : New parameters in FlexCelPdfExport.AfterGeneratePage and BeforeGeneratePage events
  • New : New method XlsFile.RemoveUserDefinedFunction
  • New : New UsePrintScale property in FlexCelHtmlExport
  • New : Improved RecoveryMode
  • 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 : New NOGRAPHICS define
  • Improved : New DOTNETZIP define
  • Improved : FlexCelReport can use also arrays besides IEnumerable for detail bands
  • Improved : Better Xamarin package for osx
  • 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.


  • New : New parameters in FlexCelPdfExport.AfterGeneratePage and BeforeGeneratePage events
  • New : New method XlsFile.RemoveUserDefinedFunction
  • New : New UsePrintScale property in FlexCelHtmlExport
  • New : Improved RecoveryMode
  • 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 : FlexCelReport can use also arrays besides IEnumerable for detail bands
  • 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 : 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.


  • 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 : Removed Xamarin Android 2.2 support
  • New : New property ExcelFile.AllowEnteringUnknownFunctionsAndNames
  • New : New properties XlsFile.RecalcVersion and FlexCelReport.RecalcVersion
  • New : New properties FlxConsts.MaxRowCount and FlxConsts.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 Xamarin Unified API support
  • Fixed : When setting the text of an object using SetObjectText the font might not be preserved.
  • Fixed : When doing reports with Linq, aggregating a double field could raise Exceptions.
  • 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


  • 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 : Generated xlsx files could be invalid when removing frozen panes from an existing file.


  • 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 : TOPN datatables didn't inherit their relationships with master datasets.
  • Fixed : Rendered xls charts could show an extra line in some corner cases with missing data.
  • Fixed : Macro references in buttons could be copied wrong when copying sheets.
  • 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 : 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 : VirtualDataTable doesn't have the MoveToRecord virtual method anymore, and instead it has a new GetValue(row, column)
  • 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 : Support for <#DBValue> tag in LINQ Reports
  • 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 : Local named ranges could lose their sheet when inserting sheets from other file.
  • Fixed : Chart.DeleteSeries could break the format of the remaining series when called in a serie at the middle of the chart.


  • New : Windows Phone 8.1 and Windows Store 8.1 Support
  • New : TExcelChart.RemoveLegend method
  • New : SVG images in HTML files
  • New : SVG Exporting
  • New : New property DisableSQLValidation in FlexCelReport
  • 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.


  • Improved : iOS and Android pdf encoding handling
  • Improved : Improved default font in Headers and footers


  • New : Support for running in machines with FIPS 140 enabled
  • New : Support for preserving PowerPivot tables in xlsx
  • New : Support for forcing codepage in Excel95
  • New : Support for displaying numbers in Engineering notation
  • New : New static events in TPdfWriter
  • Improved : SheetProtection is copied when copying sheets from one file to another
  • Improved : Improved rendering of formatted numbers
  • Improved : Improved handling of dates between 1900-1-1 and 1900-2-28
  • 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 : Charts in xlsx files didn't preserve textures.


  • New : iOS7 support
  • New : Visual Studio 2013 RC support
  • New : Demos added for Android and iOS
  • Improved : Reviewed and improved the documentation
  • Improved : Rendering in iOS and Android
  • Improved : Chart rendering
  • Improved : .XLSX autoshape rendering and conversion


  • New : Support for the new Excel 2013 xlsx encryption
  • New : Support for recalculating XIRR and XNPV functions.
  • New : Support for changing how FlexCel displays the internal numeric formats.
  • New : Reduced Memory usage. FlexCel 6 will use from about 1/2 to 1/4 of the memory FlexCel 5 used.
  • New : New startPageToExport and totalPagesToExport parameters in TFlexCelPdfExport.ExportSheet.
  • New : In OSX and iOS the pdf engine doesn't need access to the "Fonts" folder anymore. It can get fonts directly from memory.
  • New : Cross Platform support: Flexcel.NET now supports Xamarin.iOS, Xamarin.Android and Xamarin.Mac
  • Improved : More conformant xls files.
  • Improved : Many improvements and small bug fixes.


  • New : New "RecoveryMode" property in XlsFile, tells FlexCel to try to ignore many common errors in corrupt files so you might be able to open them
  • Improved : Virtual mode now can skip sheets you don't need to read, and also stop reading the file as soon as you have read all the values you need
  • Fixed : Various smaller bug fixes & improvements
  • Fixed : Improved compatibility with complex and third party created files
  • Fixed : Fixes in the preview component


  • New : Support for xlsx in mono and .NET 2.0
  • New : Replaced System.IO.Packaging by fully managed native implementation (allowing multithreaded .XLSX file handling)
  • New : New property ExcelFile.PrintLandscape
  • New : New "Text Qualifier" parameter when importing csv files
  • New : Master detail reports can now be defined with 2 ranges that expand to the same range
  • New : ATLEAST tag for the config sheet in reports
  • Fixed : When exporting to PDF and dpi wasn't 96 and using "XP Style dpi scale" the resulting PDF might be wrong
  • Fixed : Some numbers near the maximum possible in Excel (1e308) could be stored with reduced precision.
  • Fixed : Small issues in chart preserving. Speed issues when rendering big metafiles
  • Fixed : Now recalculation works more like in Excel in Lookup and Match functions
  • Fixed : Now FlexCel can read invalid xls files which have wrong strings


  • New : Master detail reports can now be defined with 2 ranges that expand to the same range
  • New : ATLEAST tag for the config sheet in reports
  • Fixed : When exporting to PDF and dpi wasn't 96 and using "XP Style dpi scale" the resulting PDF might be wrong
  • Fixed : Issues when printing all sheets in a workbook and skipping the first pages
  • Fixed : Allowed to read duplicated row records so some invalid files can be read.


  • New : Support for reading Excel 5 and 95 xls files
  • New : Support for calculating circular references
  • New : Support for accessing nested properties when using LINQ in reports
  • New : Chart preserving in xlsx
  • Improved : XLS saving performance
  • Improved : Performance when reading 2007/2010 xls files with thousands of manual styles
  • Improved : APIMate will now show the schema of the fonts when using themed fonts
  • Fixed : Xlsx files without printer information could default to landscape instead of portrait
  • Fixed : Xlsx files could save the same image more than once when used in many places
  • Fixed : Problem when saving xlsx files with more than one pivot table in different sheets
  • Fixed : <#delete range> tags could work wrong in nested reports
  • Fixed : There could be an error when manually copying formulas that included named ranges from a workbook to another
  • Fixed : .NET 3.5 XMLReader can hang when reading some malformed xlsx files


  • New : Support for rendering non contiguous print areas
  • New : Added a new ErrorAction TExcelFileErrorActions.OnXlsxMissingPart to allow reading corrupted xlsx files
  • Improved : Speed of exporting to pdf
  • Improved : Speed of exporting to html/mhtml
  • Fixed : When sorting a cell range formulas referring to that range coud be offset by one
  • Fixed : Support for reading [this row] tokens in formulas inside Excel 2007 tables
  • Fixed : Reading xlsx files with malformed hyperlinks
  • Fixed : Issue with selection chart, after copying a chart from one sheet to another
  • Fixed : Issue with nested relationships inside ADO.NET tables in a report
  • Fixed : Issue with manual page breaks in xlsx
  • Fixed : Issue when copying data validations and conditional formats by columns


  • New : XlsFile now implements IEnumerable
  • New : Support for reading and writing encrypted xlsx files
  • New : Support for protected xlsx files
  • New : Support for buttons/checkboxes/radio buttons/group boxes/comboboxes/listboxes/spins/labels/scrollbars in APIMate
  • New : Support for Autoshapes in xlsx
  • New : Pivot Table preservation in xlsx files
  • New : New overload of XlsFile.NewFile allows to specify the version of Excel used to create the file
  • New : New "Virtual Mode" for reading xls and xlsx files on demand
  • New : Native support for LINQ and Entity Framework as data sources for reports
  • New : Macro preservation in xlsx files
  • New : Header and footer images support in xlsx files
  • New : Full support for all objects in the Forms palette (radio buttons/group boxes/comboboxes/listboxes/spins/labels/scrollbars/buttons) in the API, rendering, and xlsx
  • New : Full support for R1C1 formulas
  • New : Fixed length text exporting now exports merged cells and cells that span to the right
  • New : Exporting named ranges to html
  • New : Experimental MonoTouch support
  • New : Deprecated Get/SetCheckboxLinkedCell methods in the API
  • Improved : Xlsx, Xls files now load and save much faster
  • Improved : Speed of PDF generation


  • New : TCopyRangeMode.Formats to copy formats from a block of cells to other
  • New : Support for all Excel 2010's "Renamed Functions"
  • New : Support for Recalculation of 8 built in functions new to Excel 2010
  • New : Support for Recalculation of 49 built in functions new to Excel 2007
  • New : ROWS function for reports
  • New : FIXED ranges for reports
  • New : "BALANCED COLUMNS" mode for reports.
  • Improved : Medium trust support
  • Fixed : Many small fixes and enhancements


  • New : Tested against Office 2010 RTM
  • New : Support for .NET 4.0, including new 4.0 security model
  • New : Full hyperlink support in .XLSX
  • New : Full data validation support in .XLSX
  • New : Full comment support in .XLSX
  • New : Full checkbox support in API and .XLSX
  • New : DateFormats parameter supported for opening .CSV files
  • New : "FirstSheetVisible" property in .XLS
  • New : "CenteredPreview" property in FlexCelPreview
  • New : Added support for new functions in recalculation. Added support for FREQUENCY
  • Improved : Speed! Version v5.2 is between 10% to 30% faster than previous versions
  • Improved : Database in all demos migrated from Access to SQL Server compact
  • Fixed : Various smaller bug fixes & improvements


  • New : Theme support, support for themes other than the standard Office themes
  • New : Method GetUsedNamedRanges added in API
  • New : Method CellRangeDimensions added in API
  • New : Excel 2010 XLS protected view support
  • New : Copy mode to allow copy of objects marked as "Don't copy"
  • New : Basic image support in .XLSX
  • New : Added methods to import/export from text files
  • Improved : Support for autofilters, selections, printer settings, color palette in .XLSX format
  • Improved : Indexed color support
  • Improved : Full medium-trust support
  • Fixed : Various smaller bug fixes & improvements


  • New : Added support for recalculation for PercentRank function
  • Improved : Performance for inserting rows with many images
  • Improved : Compatibility with incorrectly generated XLS files by other 3rd party libraries
  • Fixed : Several smaller bug fixes & code improvements


  • New : What-If table support. Now FlexCel can recalculate What-if tables
  • New : Support for adding multicell formulas with the API
  • New : SaveForHashing method added
  • New : RecalcCell, RecalcExpression added to the API
  • New : Ability to read and write shared workbook protection
  • New : - Excel 2007/2010 support, including support for new features in Excel 2007/2010:
  • New : ** Please note that xlsx file format support in 5.0 doesn't include objects/charts/images or conditional formats. That will be added along the 5.n series. Except for the bigger number of rows and columns (which can't be retrofitted to xls), all new properties will be saved even to the old xls files. They won't be available when opening the files in Excel 2003, but they will show in Excel 2007. And they will be used by FlexCel when printing or exporting to pdf/html, etc
  • New : * Support for reading and writing xlsx file format
  • New : * Support for gradients in cell backgrounds
  • New : * Support for comments in named ranges
  • New : * Support for a different header and footer for the first page and for even pages
  • New : * Support for Excel's 2007 true color and themes
  • New : * Methods OptionsMultithreadRecalc, OptionsForceFullRecalc, OptionsAutoCompressPictures, OptionsBackup, OptionsCheckCompatibility in XlsFile class allow to configure the corresponding settings in an Excel file
  • New : * Expanded the rows to 1048576 and the columns to 16384
  • New : * Cell indentation can go up to 250 characters instead of the old 15
  • Improved : Support for numeric formats
  • Improved : Support for Date axis in charts
  • Improved : Rendering with support for diagonal borders and new linespace property
  • Improved : In many places performance was significantly improved


  • New : TTC font support when exporting to PDF
  • New : SetExpression method in Flexcel Report
  • New : Full support for working with named styles from the API
  • New : Delphi Prism support. All demos have been converted to Delphi Prism, installation now installs into Delphi prism, and APIMate can generate Delphi Prism code.
  • New : Ability to modify chart series from the API
  • Improved : Speed of rendering conditional formats
  • Improved : Speed in formula recalculation
  • Improved : HTML Rendering
  • Fixed : Various smaller fixes & improvements



TMS FlexCel Studio for .NET

€ 235

70 yearly renewal
license for 1 developer

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

TMS FlexCel Studio for .NET

€ 1,175

350 yearly renewal
license for unlimited developers in the company

check  Full source code
check  Access to the TMS Support Center
check  Free updates and new releases
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 Studio for .NET evaluation today!
Visual Studio .NET

What our customers say

Flexcel is an essential tool for working with Excel files in .NET. It is far less expensive to to develop Excel functionality in .NET with Flexcel than without it. I save several thousand dollars per year just in development, not including additional costs related to maintaining Office applications. TMS Flexcel Studio saves me enough money each year to buy many licenses for Office. I'm also very happy with the licensing and how much value TMS Software provides with my purchase. Even paid upgrades are a much better value than upgrades from other vendors. I enthusiastically endorse TMS Software and Flexcel Studio for .NET.

- Steve Parrish

It is easy to use and powerful. I use it in cosole apps focused on reporting and calculation and it is fast in generating files. The feature of reporting by tags or "direct reporting" once known is a fundamental shortcut in report creation. Not only it is fast, but also powerful and I can say this because I use it integrated with sql server: download data from sql, apply complex calculation by an excel template hand-defined in Excel, convert to values and upload back to sql server. Size of this is about 60K rows X 70 columns X 6 (separate files). It works, obviously it consumes almost all the available 4 gb ram but it works even in 32bit mode. When I use Flexcel I feel myself as I was driving a powerful sport car. Thank you very much.

- Giorgio Biondi

Just wanted to say that I'm very impressed by your component and the associated documentation. Since starting my company I've used quite a few third-party vendors, and the intuitive usage and excellent documentation on your product is outstanding. Makes interacting with Excel files very easy. Now, if only it was as easy to interact with an instance of Excel...

- Mark Sinclair-McGarvie

I've worked with Flexcel for the last two years and this is one of the greatest products I have ever had the pleasure of working with. It is FAST and it just plain works! They are super responsive in answering questions and they've even added features I've requested. If you need to generate reports, don't shell out money for Crystal (or whatever name it goes by this month) - Buy this and you will NOT be sorry.

- Bill

After looking carefully at all the Competitor products in detail and having worked with one competitor product extensively we decided to move to FlexCel - this was no small decision but we have been rewarded with the most powerful and complete implementation. .Net managed code and a huge set of features. With FlexCel we really push the boundaries and have found it is really up to the task. Most importantly when we needed new business critical functionality the guys on support have really responded and given us and the product features when they were needed. I would strongly recommend FlexCel from both a technical and service response point of view.

- Richard White MBus C.E.O.


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