Convert an XLS file to CSV

$ in2csv [data.xls]

Convert a DBF file to a CSV file
$ in2csv [data.dbf] > [data.csv]

Convert a specific sheet from an XLSX file to CSV
$ in2csv --sheet=[sheet_name] [data.xlsx]

Pipe a JSON file to in2csv
$ cat [data.json] | in2csv -f json > [data.csv]


usage: in2csv [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]

[-p ESCAPECHAR] [-z FIELD_SIZE_LIMIT] [-e ENCODING] [-L LOCALE] [-S] [--blanks] [--date-format DATE_FORMAT] [--datetime-format DATETIME_FORMAT] [-H] [-K SKIP_LINES] [-v] [-l] [--zero] [-V] [-f FILETYPE] [-s SCHEMA] [-k KEY] [-n] [--sheet SHEET] [--write-sheets WRITE_SHEETS] [--encoding-xls ENCODING_XLS] [-y SNIFF_LIMIT] [-I] [FILE]

Convert common, but less awesome, tabular data formats to CSV.

positional arguments:


The CSV file to operate on. If omitted, will accept input as piped data via STDIN.

optional arguments:

-h, --help

show this help message and exit


Delimiting character of the input CSV file.

-t, --tabs

Specify that the input CSV file is delimited with tabs. Overrides "-d".


Character used to quote strings in the input CSV file.

-u {0,1,2,3}, --quoting {0,1,2,3}

Quoting style used in the input CSV file. 0 = Quote Minimal, 1 = Quote All, 2 = Quote Non-numeric, 3 = Quote None.

-b, --no-doublequote

Whether or not double quotes are doubled in the input CSV file.


Character used to escape the delimiter if --quoting 3 ("Quote None") is specified and to escape the QUOTECHAR if --no-doublequote is specified.


Maximum length of a single field in the input CSV file.

-e ENCODING, --encoding ENCODING

Specify the encoding of the input CSV file.

-L LOCALE, --locale LOCALE

Specify the locale (en_US) of any formatted numbers.

-S, --skipinitialspace

Ignore whitespace immediately following the delimiter.


Do not convert "", "na", "n/a", "none", "null", "." to NULL.

--date-format DATE_FORMAT

Specify a strptime date format string like "%m/%d/%Y".

--datetime-format DATETIME_FORMAT

Specify a strptime datetime format string like "%m/%d/%Y %I:%M %p".

-H, --no-header-row

Specify that the input CSV file has no header row. Will create default headers (a,b,c,...).

-K SKIP_LINES, --skip-lines SKIP_LINES

Specify the number of initial lines to skip before the header row (e.g. comments, copyright notices, empty rows).

-v, --verbose

Print detailed tracebacks when errors occur.

-l, --linenumbers

Insert a column of line numbers at the front of the output. Useful when piping to grep or as a simple primary key.


When interpreting or displaying column numbers, use zero-based numbering instead of the default 1-based numbering.

-V, --version

Display version information and exit.


The format of the input file. If not specified will be inferred from the file type. Supported formats: csv, dbf, fixed, geojson, json, ndjson, xls, xlsx.

-s SCHEMA, --schema SCHEMA

Specify a CSV-formatted schema file for converting fixed-width files. See documentation for details.

-k KEY, --key KEY

Specify a top-level key to use look within for a list of objects to be converted when processing JSON.

-n, --names

Display sheet names from the input Excel file.

--sheet SHEET

The name of the Excel sheet to operate on.

--write-sheets WRITE_SHEETS

The names of the Excel sheets to write to files, or "-" to write all sheets.

--encoding-xls ENCODING_XLS

Specify the encoding of the input XLS file.

-y SNIFF_LIMIT, --snifflimit SNIFF_LIMIT

Limit CSV dialect sniffing to the specified number of bytes. Specify "0" to disable sniffing entirely.

-I, --no-inference

Disable type inference (and --locale, --date-format, --datetime-format) when parsing CSV input.

Some command-line flags only pertain to specific input formats.


The full documentation for in2csv is maintained as a Texinfo manual. If the info and in2csv programs are properly installed at your site, the command info in2csv should give you access to the complete manual.

Copied to clipboard