Why Your CSV Opens Wrong in Excel

Last updated 19 August 2026 · about 5 minutes to read

Everything in one column, accented characters as garbage, dates where product codes should be. Three causes and the fix for each.

A CSV that opens as one column, or shows é where é should be, or turns a product code into a date, is almost never a broken file. It is a correct file being read with the wrong assumptions.

Everything is in one column

Excel splits a CSV on the list separator from your Windows regional settings, not on the comma. In most of Europe the decimal separator is a comma, so the list separator is a semicolon, and a comma-separated file opens unsplit.

Three fixes, in order of how permanent they are. Use Data then From Text or Get Data and choose the delimiter in the import dialog, which affects this file only. Or add a line reading sep=, as the very first line of the file, which Excel honours and every other tool ignores as a stray row. Or change the list separator in Windows regional settings, which affects everything you open from then on.

Accented characters are garbage

You are seeing a UTF-8 file being read as a single-byte code page. In UTF-8, é is two bytes. Read one byte at a time under Windows-1252 those two bytes are à and ©, which is exactly what you see on screen.

The fix is a byte order mark: three bytes at the very start of the file that mean nothing except this is UTF-8. Excel looks for them, and finding them switches its decoding. Every CSV exporter aimed at Excel should offer this as an option, and Tablizer has it as a checkbox in the CSV output settings.

If the file already has damage in it, meaning you can see the replacement character U+FFFD, the bytes are gone and no setting will bring them back. Re-export from the source.

Excel changed my values

This is the one that costs people real work, because it happens silently and looks like the file was always that way.

  • Product codes that look like dates. A value of 3-5 becomes 3 May. SEPT1 becomes a date in some locales. This is why a group of geneticists renamed several genes in 2020: Excel kept turning SEPT2 into a date and the renaming was easier than fixing every spreadsheet.
  • Leading zeros stripped. 007 becomes 7 the moment the column is read as numeric.
  • Long numbers truncated. Anything past fifteen significant digits loses its tail, and the last digits become zeros.
  • Fractions read as dates. 1/2 becomes 2 January.

All four have the same cause and the same fix. Excel guesses a type per column on import, and the guess is wrong for identifiers. Use Data then From Text, and in the import wizard mark those columns as Text before the data lands in the sheet. Double-clicking the file skips the wizard entirely, which is why it is the one thing not to do.

How to check without opening Excel

Open the file in a text editor, or in a CSV viewer that treats every value as text. What is on those lines is what is in the file. Anything different on screen in a spreadsheet is the spreadsheet's interpretation, not the data.

Tools mentioned here

Questions

What does sep=, do?

Placed on the first line of a CSV, it tells Excel which character separates fields, overriding the regional setting. Excel consumes the line rather than showing it. Most other tools do not understand it and will read it as a one-field first row, so use it only for files destined for Excel.

Is a UTF-8 BOM a good idea in general?

For files meant for Excel, yes. For files meant for anything else, it is a small nuisance: some parsers include the mark in the first header name, so a column called id arrives as \ufeffid. Add it when Excel is the destination and leave it off otherwise.

More guides