CSV stores characters, spreadsheets assign types

A CSV field does not carry a built-in “customer ID” type. When a spreadsheet opens the file directly, it may infer that a digit-only field is a number. Numeric representations do not need leading zeros, so they disappear.

The same inference creates two related risks:

  • Long identifiers: values beyond a spreadsheet’s numeric precision may be rounded or displayed in scientific notation.
  • Date-like strings: a value such as 03/04/26 may become a date according to local settings.
  • Formula-like text: fields beginning with characters such as = may be evaluated rather than treated as literal text.

A controlled round trip changed all four classes

In the CSVProof seed benchmark, a default LibreOffice 26.8.0.3 headless CSV → XLSX → CSV round trip changed 00001234 to 1234, rewrote a 30-digit identifier in scientific notation, reduced 00000000000000000042 to 42, and evaluated =2+2 as 4.

This does not mean every spreadsheet import must damage these fields. Import-as-text settings can avoid some changes. It does show why opening, inspecting and saving are part of one safety question.

Read the method and download the fixture

Before you edit or resave the file

Keep the original untouched.Work on a copy and compare the output back to the source.
Inspect raw text first.Confirm leading zeros, long identifiers and date-like values before type inference.
Set columns to text explicitly.Use an import flow that allows per-column control; avoid direct double-click opening for authoritative interchange files.
Check more than the visible cells.Verify record counts, malformed rows, quoting, encoding and line endings.
Compare after saving.Use record keys and per-field differences, not only line position or a spot check.

Preservation is the default; conversion is a named step

CSVProof treats values as text unless you add an explicit cast or transformation. Risky-looking fields are flagged for review, the parser contract stays visible, and any normalization is previewed and counted before a new output file is written.

Get early access