This is how you avoid the date autocorrect
Excel’s import turns values like 1-2 and SEPT9 into dates. Because the cell types are written explicitly here, text stays text. It is the main reason to convert rather than rename.
Opening a CSV in Excel and saving it as .xlsx works until Excel decides your product code is a date. This converter builds the workbook directly, writing each value with an explicit cell type, so nothing is reinterpreted on the way in.
Reading CSV
Auto-detect reads the first rows and picks the separator that splits them consistently.
Turn off when the file starts straight into data. Columns are then named column_1, column_2, and so on.
Turns "42" into a number and "true" into a boolean. Values with leading zeros stay text so IDs and zip codes survive.
Which worksheet to convert. Filled in once the workbook is read.
Dotted path to the array of records, such as data.items. Leave empty to use the whole document.
Turns {"user":{"id":7}} into a user.id column. Arrays are kept as JSON text.
Pick the encoding the file was written in. Wrong encoding shows up as garbled accents.
Comma-separated words that should become null instead of text.
Writing Excel
Snappy is the default across Spark, DuckDB and pandas. Gzip is smaller but slower to read.
Turns a user.id column back into {"user":{"id":7}}.
Excel needs a byte order mark to open UTF-8 files with accents correctly.
Rows per row group. Larger groups compress better; smaller groups let readers skip more.
conversion-preroll
This short ad is what keeps the converter free.
Plain text rows that open anywhere, with no types and no schema. Spreadsheet workbooks with sheets, formatting and cell types.
| CSV | Excel | |
|---|---|---|
| Type information | None — every value is text | Per cell — text, number, date, boolean |
| Structure | Flat rows and columns | Sheets of rows and columns |
| Compression | None | Zipped XML |
| Typical file size | Baseline (100%) | Smaller than CSV, larger than Parquet |
| Schema | Header row at best | None beyond the header row |
| Human-readable | Yes, in any text editor | Only in a spreadsheet app |
| Tool support | Universal | Excel, Google Sheets, LibreOffice |
Excel’s import turns values like 1-2 and SEPT9 into dates. Because the cell types are written explicitly here, text stays text. It is the main reason to convert rather than rename.
A worksheet holds 1,048,576 rows and 16,384 columns. Larger inputs are truncated and the conversion tells you so. For bigger data, Parquet or CSV is the better destination.
Excel shows numbers beyond 15 significant digits in scientific notation and rounds them internally. Long identifiers are safest kept as text — leading zeros already are.
A formatted workbook with a frozen header reads as a finished deliverable; a raw CSV reads as homework.
No delimiter prompts, no encoding guesses, no accidental type conversions.
Correct types up front means fewer broken cells after someone edits the file.
sticky-bottomYour file is downloading
post-conversion