Guide · 2 min read

Convert a CSV to any of 38 formats.

One export sheet for every format: choose the rows, the columns and their order, and the options the format needs — then save the combination as a preset for next time.

The export sheet

  1. Open the file and press ⌘E.
  2. Choose the format — or one of your saved formats.
  3. Choose the rows: all, only those the filter shows, or only the selected ones — with a row limit if you like.
  4. Choose the columns, tick or untick them, and drag them into the order the receiver wants. The choice is kept for the file, so the next export starts where this one left off.
  5. Set the format's options and save. A preview shows the first rows as they will come out.

Which format for which job

You needExport as
A file for Excel usersExcel .xlsx, with a frozen header — codes with leading zeros and long numbers stay text
A file for LibreOffice or NumbersOpenDocument .ods
An API or a web appJSON (objects or arrays), nested JSON, JSON Lines
Configuration or a mapYAML, XML, TOML, property lists, GeoJSON
A data pipelineParquet, Avro, ORC, Arrow, Feather, HDF5 — or BSON, MessagePack and Python pickles
A databaseSQLite database, or SQL INSERT statements with CREATE TABLE — for standard SQL, MySQL and MariaDB, or PostgreSQL
Statistics softwareSPSS, Stata, SAS transport, R data, MATLAB
A mainframeFixed-length EBCDIC records and a COBOL copybook
Something to print or sendPDF (PDF/A too), Word .docx, rich text
DocumentationMarkdown, HTML, LaTeX, AsciiDoc
Another CSVCSV or TSV with the separator, quoting, encoding and line endings you choose

Options that come up often

  • Empty values: leave them empty, or write NULL, a dash or anything else.
  • Decimal separators: keep them as written, or normalise every number to a point or a comma.
  • Column names: include them or not.
  • Encoding and BOM for text formats; sheet name for workbooks; table name and rows per INSERT for SQL.

Presets and automation

Save any combination as a named format in Settings ▸ Formats; eleven are built in, including Excel (European), Excel (US), RFC 4180, SQL inserts and a PDF report.

For conversions that happen every day, the command line does it without a window:

icsv convert ledger.sav --to ledger.parquet
icsv old.txt -d semicolon --to clean.csv

The ending of the name picks the format. The command waits until the file is written, so the next line of a script can use it, and anything that went wrong comes back as a message and an exit code. AppleScript can do the same inside a workflow: export table to "~/Desktop/sales.xlsx".

Try it on your own file

Intact CSV Editor is in beta. Join the beta and we will write to you as soon as your access is ready.

Questions

Common questions

How do I convert a CSV to Excel on a Mac?

Open the CSV in Intact CSV Editor, press ⌘E, choose Excel and save. Leading zeros and long numbers are kept as text in the workbook.

Can I convert many files at once?

Yes — from the command line, icsv convert in a loop, one file after another and no window opening: for f in *.sav; do icsv convert "$f" --to "${f%.sav}.csv"; done. AppleScript and Shortcuts can do it too.

Open your most difficult file.

Join the beta and we will write to you as soon as your access is ready. Your files never leave your Mac.

macOS 14 Sonoma or later · How we use your address