TMS FlexCel for VCL & FMX
Powerful, extensive & flexible component suite for native Excel report & file generation & manipulation for VCL & FireMonkey
Also available for:
v126.96.36.199 (November 23, 2018)Version history
- 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
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
- 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
TMS FlexCel for VCL & FMX
for Delphi XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, C++Builder XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio (Prof/Enterprise/Architect)
View licensing FAQ
- License for commercial use: Single developer license, Site license
- Includes full source code
- Free 2 year updates and new releases
- Free priority support through email and forum