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/26may 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
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