OExport - XLSX/XLS/ODS/CSV native Delphi/Lazarus import/export library

Latest Version

2.26 (2016/04/27)

Basic info

OExport allows you to generate and read XLSX, XLS, ODS and CSV spreadsheets directly from Delphi & Lazarus. It has also an import feature - you can extract data from XLSX, XLS, ODS and CSV files. Please see the feature matrix below for more details.

Why is OExport the best solution for you:

  • You can create and read XLSX, XLS, ODS and CSV documents with just one code.
  • A wide range of compilers and platforms is supported: Delphi 5, 6, 7, 2005, 2006, 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin and Lazarus; Win32, Win64, Mac OSX, Linux (Little-Endian platforms only); VCL, FireMonkey, LCL.
  • File types are detected automatically.
  • Easy localization to your language. Languages included: English, Czech, German, Danish, French, Hungarian, Netherlands, Russian
  • Formula recalculation engine, see http://www.kluug.at/oexport-help/formula-recalculation-engine/ for details.
  • Template engine: automatically process user-defined XLSX/XLS templates.

The documentation is online: http://www.kluug.at/oexport-help/.
You find an offline copy of the documentation here: oexport-help-offline.zip.

Features

Library design

  • Native pascal object oriented code
  • No external dll libraries are required
  • No dependency on Excel or Calc installation (no OLE)
  • Full unicode support even for non-unicode Delphi versions (D7, D2007 etc.)
  • Write-On-The-Fly and Read-On-The-Fly: export and import huge tables without the need to store the whole document in memory.
  • Reasonably fast (see performance table below).

Officially supported platforms

  • Delphi 5, 6, 7, 2005, 2006, 2007: VCL + full unicode support thanks to WideString.
  • Delphi 2009, 2010, XE: VCL
  • Delphi XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin: VCL + FireMonkey, 32bit + 64bit Windows, Mac OSX.
    Important notice: Delphi ARM compiler (iOS) was not tested yet and may be unsupported.
  • Lazarus 1.0.8: 32bit + 64bit Windows, Linux and Mac OSX (XLS: Little Endian platforms only)

Template Engine

  • Currently only loading of XLSX/XLTX and XLS/XLT templates is supported.
  • Automatically replace cell values and modify cells.
  • Automatically add and process rows as they are defined in the template.
  • Save the generated template in all formats OExport supports: XLSX/ODS/XLS/CSV!

Feature Overview

See the following files for a fast feature overview. These files have been directly exported with OExport:

You can generate those files with the demo application you find in the FREE package (see download tab). They have not been edited after the export in any way.
Please note that XLS exporter doesn't support images and charts and therefore you won't see them in the exported XLS file.
The full source code that was used to generate them can be obtained from the documentation.

Feature Matrix

yes= Supported;yes= Partially supported; no= Not supported;n/a= Not available
Feature ExportImport
XLSX ODS XLS CSV XLSX ODS XLS CSV
Cell types: string, number, percent, currency, scientific, fraction, time, date, datetime yesyesyesyesyesyesyesyes
Rich text in cells yesyesyesn/ayesyesyesn/a
Custom number format yesyesyesn/ayesnoyesn/a
Hyperlinks for string cells yesyesyesn/ayesnoyesn/a
Formulas for all cell types yesyesyesyesyesyesyesn/a
Cell, row, column and worksheet formatting: horizontal + vertical alignment, wrap text, font, background color, borders (color, size and style), text orientation and rotation yesyesyesn/ayesnoyesn/a
Column widths + row heights yesyesyesn/ayesnoyesn/a
Column + row grouping yesyesyesn/ayesnoyesn/a
Conditional formatting yesyesyesn/ayesnoyesn/a
Column + row span (merged cells) yesyesyesn/ayesnoyesn/a
Print settings: page header & footer, page orientation, page margins, page order, page breaks, print scale, table centering, repeat columns & rows, grid lines, table headers yesyesyesn/ayesnoyesn/a
Fixed cells (window fixed scrolling) yesyesyesn/ayesnoyesn/a
Named cells yesyesyesn/ayesnoyesn/a
Cell & worksheet protection: with and without password yesyesyesn/ayesnoyesn/a
Autofilter yesyesnon/ayesnonon/a
Comments yesyesnon/ayesnonon/a
Images: JPEG, PNG, GIF, TIFF
 + fill, border, shadow
yesyesnon/ayesnonon/a
Charts: bars, columns, lines, areas, bubble, scatter; different line, fill, marker and axes styles, sizes, colors; titles ... yesyesnon/anononon/a

Row and column limits

OExport is able to read and write the maximum permitted row and column counts of every supported format.
The limits are the following:
Row countColumn count
XLSX1'048'57616'384
ODS1'048'5761'024
XLS65'536256
CSV2'147'483'6472'147'483'647

Performance

The performance of OExport may vary on used compiler. The best figures are reached with Delphi 2009 and newer.
The following times were measured on an old laptop from 2007 (Intel Core 2 Duo, 1.8 GHz, 4.0 GB RAM, Win 7 32bit). Files consisted of 1 million string cells with shared strings table (SST) either off or on.
1 million string cells ExportImport
XLSX ODS XLS CSV XLSX ODS XLS CSV
D2009+SST off 35 s32 s22 s15 s70 s84 s8 s15 s
SST on 44 s32 s27 s15 s105 s84 s9 s15 s
D5-D2007SST off 92 s75 s44 s42 s178 s170 s17 s32 s
SST on 100 s75 s50 s42 s260 s170 s20 s32 s
LazarusSST off 50 s48 s37 s29 s94 s103 s8 s26 s
SST on 55 s48 s40 s29 s124 s103 s8 s26 s

OFiller

  • OFiller: fill DOCX (Word 2007-2013), ODT (OpenOffice Writer), XLSX (Excel 2007-2013), XLS (Excel 97-XP), ODS (OpenOffice Calc) templates

Screenshots

Features of OExport

Template 1 and generated  XLS document Template 2 and generated ODS document XLSX real-world example (Excel 2007) ODS real-world example (OpenOffice) Export to ODS (LibreOffice) Export to XLSX (Excel 2007) Import from XLSX (Excel 2007) Export Tables with ColSpan and Formula All supported cell types Page header and footer are supported - even with special tags like "Page Number", "Page Count" etc.! XLSX: Image and a pie chart (Excel 2007) ODS: Image and a pie chart (OpenOffice)

OExport on different operating systems

Lazarus demo application Lazarus under Kubuntu - export to ODS Lazarus under Kubuntu - import from XLSX FireMonkey under Mac OSX - export to ODS FireMonkey under Mac OSX - import from XLSX Lazarus under Mac OSX - export to XLSX Lazarus under Mac OSX - import from ODS

OFiller

Fill DOCX Templates (Word 2007)

License

OEXPORT LICENSE INFORMATION
===========================


Copyright (C) 2011-2016 Ondrej Pokorny
  http://www.kluug.net

This license is applicable to all files distributed in this archive if not
stated differently.
The commercial part of the license text (FULL version) applies to orders
after April 1st, 2016.


*** BEGIN LICENSE BLOCK *****

OExport 2.x LICENSE
-------------------

 1) You may use OExport if:
     a. You use the FREE version.

        OR

     b. You buy a commercial license of the FULL version.

 2) Limitations of the FREE version
     a. There are no limitation per workplace. You can use OExport FREE
        both for commercial and non-commercial purposes.

     b. Only the first worksheet will be exported or imported and a maximum
        of 40 rows and 10 columns.

     c. You may not modify, decompile, disassemble, reverse engineer or
        translate OExport FREE.

 3) Limitations of the FULL version
     a. Single developer license: only the license holder may use OExport.

     b. 2-3 developers license: only maximum of 3 developers within the license
        holder company may use OExport.

     c. 4-5 developers license: only maximum of 5 developers within the license
        holder company may use OExport.

     d. Company license: all developers within the license holder company may use
        OExport.

     e. Licenses may not be sold or transfered to other developers or companies.

     f. There are no limitations in functionality in the FULL version.

     g. You get 2 years of free updates and new releases, starting from the day
        of purchase. After this period you can order extra 2 years of updates
        for 60% of the license price.

 4) You may NOT use OExport for:
     a. Writing libraries and applications that are in direct or indirect
        competition with OExport or tools whose main purpose is OExport
        functionality. An example would be to build a public XLSX- ODS- or
        XLS-Export library or a conversion tool etc. OExport functionality
        has to be an extension to an existing application (e.g. export in
        an accounting software).
        If you need a special license, please contact me.

 5) Redistribution of the source code and the DCU's
     a. OExport source code and DCU's may not be redistributed on any kind
        of media and offered for download on any internet server without my
        explicit permission. They also may not be reselled without my
        permission.

 6) Redistribution in binary form
     a. If you haven't bought a commercial license, you have to attribute
        OExport in e.g. the About-Dialog of your software.
        The attribution must contain the name ("OExport") and my homepage
        ("http://www.kluug.net").

     b. If you have bought a commercial license, no attribution is required.

 7) Additional software licensed with OExport
     a. If you purchase OExport, you also get a special OXml commercial license.
        This license allows you to use OXml only as a part of OExport (because
        OExport uses OXml for reading XLSX and ODS files).
        You are not allowed to use OXml separately - in this case you have
        to obtain OXml commercial license as well.
        This paragraph applies to OXml which is located in OXml directory.

 8) Limited Warranty
     a. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
        EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS
        WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF
        ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT SHALL
        KLUUG.NET OR ANY OTHER PARTY WHO MAY HAVE DISTRIBUTED THE SOFTWARE AS
        PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
        SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
        INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
        OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
        PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER
        PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
        POSSIBILITY OF SUCH DAMAGES.


***** END LICENSE BLOCK *****

Commercial license

All commercial licenses include full source code of OExport that can be used on all officially supported platforms.

You may order a roality-free commercial license for a specified number of developers using OExport in your company. A commercial license allows you to use OExport in any kind of application commercial or freeware that does not break the Section 4. of the license ("DLL library").

You also get 2 years free updates and new releases with priority email support.
With these resources you can add XLSX/ODS support to your applications quickly and with ease.

Go to OExport online help.

Pricing & Order

Online orders are managed by PayPal. I also accept bank transfers to my bank account. In this case, please send me an email with your billing address and I send you my account number.

You receive an invoice per email after your payment.

All prices are without VAT.

I offer you a 30-days money-back guarantee if you can't use OExport for what is advertised on this page (because of bugs, compatibility problems etc.).

Commercial licenses & help access

OExport
for 1 developer
+ 2 years of updates
EUR 125,- (~ USD 140,-)
OExport
for max. 3 developers within one company
+ 2 years of updates
EUR 250,- (~ USD 280,-)
OExport
for max. 5 developers within one company
+ 2 years of updates
EUR 375,- (~ USD 420,-)
OExport
for unlimited developers within one company
+ 2 years of updates
EUR 500,- (~ USD 560,-)

Change log

OEXPORT RELEASE INFORMATION
===========================

  Version 2.26 (2016-04-27)

    New features
      - support of prefixed XLSX documents (typically from Mac OSX).
      - added support for comment images.
      - added OExportXLSXCustom (support of custom files in an XLSX container).
      - implement secondary y-axis support for XLSX
      - implement TOExporterText.DecimalSeparator
      - hyperlinks: cell hyperlinks, tooltip support
      - OFiller: support duplicating rows
      - OFiller: intelligent token merge for DOCX
      - OFiller: add TOMergerDOCX
      - Delphi 10.1 Berlin support

    Bugfixes
      - fix hyperlink bug
      - fix a speed problem of on-the-fly export and keep memory consumption low if hyperlinks are used
      - added Polish translation (from Michal Glebowski).
      - fix relative formula evaluation if reference cell doesn't exist.
      - fix formula for TExportCellEmpty
      - fix problem with replacing n to m in formatting strings.
      - use TOHashedStrings in TExporterXLSX_HyperLinks
      - fix AV in TExportNamedCells.Remove

    Installation
      * If you want to update OExport, you have to update OXml as well (OXml is included in the zip package too).
        If you use packages, you have to recompile them! (Both OXml and OExport packages).



  Version 2.25 (2015-12-07)

    Bugfixes
      - renamed ZLib* units to OZLib* units to solve issues with duplicate names
      - fixed conditional formatting and data validation assignment in templates
      - added TExportCols InsertColWithCells, DeleteColWithCells, AssignColWithCells
      - Writeable TExportImage.Ext; make RecalculateFormulas public
      - Added MODE Delphi switches for FPC

    Installation
      * If you want to update OExport, you have to update OXml as well (OXml is included in the zip package too).
        If you use packages, you have to recompile them! (Both OXml and OExport packages).



  Version 2.24 (2015-09-16)

    New features
      + Delphi 10 Seattle support.

    Bugfixes
      * prevent AV during import of XLSX comments.
      * fixed TExportRow.AddCellVariant
      * added ApplicationVersion and set default values for Application/ApplicationVersion to meet Excel 2007 due to LibreOffice compatibility.
      * check for circular references in formula recalculation
      * fixed ROW() and COLUMN() functions



  Version 2.23 (2015-08-26)

    New features
      + New property TExportWindowSettings.View.
      + New property TOExport.AutoAdjustFormulas - adjust formulas when inserting/deleting rows/cells (the same that Excel does).
          False by default.
      + New properties TExportChartAxis.MaxValue and .MinValue.
      + OFiller procedure ReplaceImage changed to function - it returns number of replaced images.
      + Added new translations. Now OExport supports the following languages:
          English, Czech, German, Danish, French, Hungarian, Netherlands, Russian
      + Multiple chart support (TExportChart.SubCharts).
      + Support for enhanced TExportConditionalFormatting and TExportDataValidation ranges - row, col and custom ranges.
        + New property TExportWorkSheet.ConditionalFormattingList.
        + New property TExportWorkSheet.DataValidationList.
        * You can use the lists above for adding CondForm or DataVal for custom ranges.
      + Added TOExportTemplate.FindStringCellsByStrPos. With it you can find a cell that contains a substring.
    Bugfixes
      * Images in cells with colspan were not exported.
      * Fixed bug in DOCX ReplaceImage.
      * XLS relative formula bug fix.
      * Recalculate formulas when loading XLS and cell type doesn't match formula result.
      * OFloatToFraction bug fix.
      * ODS cells with colspan bug fix.
      * TOOleStorage.ReadDirectoryEntry bug workaround.
      - Removed TOFileStream from OFileUtils.pas. TOFileStream is declared in OWideSupp.pas in OXml.

    Installation
      * If you want to update OExport, you have to update OXml as well (OXml is included in the zip package too).
        If you use packages, you have to recompile them! (Both OXml and OExport packages).



  Version 2.22 (2015-04-28)

    New features
      + TCellHAlignment - new options cahCenterContinuous, cahDistributed.
      + XLS formulas support references accross worksheets.
      + TExportChartData.ShowLabels changed from Boolean to TExportChartDataShowLabels.
        ! Use [] for false.
        ! Use [eslValue] for true.
      + TExportChartAxis has new properties: ExcelNumberFormat, OriginAt, OriginValue
      + TExportWorkSheet has new properties: Visibility and NewCellStringFormat
      + TExportWindowSettings has new properties: ShowFormulas and ShowZeros
      + Added data validation support: TExportCell.DataValidation
      + Added support of named cells within a sheet: TExportWorkSheet.NamedCells
      * Improved formula recalculation engine and XLS formula support.
      * Bug fix: zero date/time was exported as empty cell.
      * Removed TPAbbrevia dependency. OExport now uses native ZLib on all platforms. As a result,
        export in Lazarus, Delphi XE and older is faster and uses less memory.
      * Improved image export: images are not loaded into memory if they are
        exported from files.
      * Some other small improvements and bug fixes.


(Please see the installation package for a complete change log).

Download

Please be sure you check the license information before downloading any of the files below.

OExport FREE/TRIAL package

OExport offline documentation

Installation

1.) Add OExport path to your library - please mind your Delphi version!

  For Delphi XE4 32bit, the path is:
    {INSTALLATION DIRECTORY}\OExport\DelphiXE4\Win32\

2.) Add OXml path to your library.

  The path is:
    {INSTALLATION DIRECTORY}\OXml\utils\

3.) Run the demos from your Delphi IDE.

  You find the demos in:
    {INSTALLATION DIRECTORY}\OExport\demo\source\
    
4.) Run the compiled FULL demo

  You find the precompiled demo of the commercial full version in:
    {INSTALLATION DIRECTORY}\demo\compiled-fulldemo\

Important notice

The FREE/TRIAL package contains OXml already. OXml is licensed under CPAL 1.0.

Compiled applications without source code

Contact me for more information (you can write in czech/english/german/russian): Email