From Lazarus wiki
Revision as of 10:39, 14 June 2012 by BigChimp (talk | contribs) (Overview of CSV, contrast with SDF)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


CSV means Comma-Separated Values, and is a popular file format that is unfortunately not completely standardized. It is a text based file format with data fields separated by comma's (or, in variants, other characters like tabs and semicolons). There may or not be a header line that lists the field names. Field data containing delimiters may be prohibited or enclosed by quotes (most commoonly the double quote character). Line endings (#13 and/or #10) may or may not be allowed in field data.

RFC4180 (see [www.rfc-editor.org/rfc/rfc4180.txt]) tries to codify and standardize existing practice; it makes sense to conform to this standard when writing CSV data (and accept all RFC4180 data when reading). Another, different, specification can be found at [1]

Spreadsheet packages such as Microsoft Excel and OpenOffice/LibreOFfice Calc are able to export to and import from this format. However, as Microsoft Excel may interpret some fields such as date fields differently depending on a user's OS locale, it may pay to find alternative ways of transferring data (e.g. using the FPSpreadsheet code).


= DelimitedText

TStringList offers the DelimitedText property. This parses a line of text out into separate fields. Note, however, that DelimitedText is supposed to be in SDF, a Delphi-specific format that is very much like CSV, but does not conform with RFC4180 completely.

Tips: when reading CSV data, set the StrictDelimiter property to true. When writing out CSV data, set StrictDelimiter to false and output the DelimitedText property.

(See e.g. [2] for a pending patch that improves SDF input/output).


FreePascal offers the SDFDataset, which stores data in SDF format. This format may be close enough to what a reading application expects to function.

Data Export

FreePascal/Lazarus database export functionality (e.g. TCSVExporter on the Data Export tab) offers CSV export functionality for datasets.


See CsvDocument.

Jan's CSV components

See JCSV_(Jans_CSV_Components).


ZMSQL stores data in semicolon-delimited files (using SDF?).