YorozuyaIT
Japanese Text & Encoding

Excel Opens Your CSV in One Column? Semicolons, Decimal Commas, and European Locales

Written by the Yorozuya IT editorial team, based in Japan. Menus, apps, and rules change, so check the date.

Short answer

You send a clean CSV to a colleague in Germany. They double-click it and see everything crammed into column A: name,price and Tea,3.50 in one cell each. Nothing is wrong with the file. The two Excels simply disagree about what separates fields.

The cause: the regional "list separator"

When you open a CSV by double-clicking, Excel splits it using the list separator from the operating system's regional settings. In English-speaking locales that is usually a comma. In many European locales, such as German, French, Italian, and others, the decimal mark is a comma, so the list separator is a semicolon.

The same CSV opens in separate columns in a US locale but in one cell in a German locale, with four fixes

That is why a file with 3.50 and commas works in the US, and why a European file written as Tea;3,50 works in Germany but looks wrong in the US.

The decimal comma problem

Consider this line from a comma-separated file: Tea,3,50. Is that two fields or three? A European reader writes 3,50 for three and a half. When numbers use decimal commas, a comma delimiter becomes ambiguous, which is another reason European exports use semicolons.

Four ways to fix it

1. Import instead of double-clicking. In Excel: Data → From Text/CSV, choose the file, and set the Delimiter (comma or semicolon) in the preview. You can also set the decimal and thousands separators in the options, and set columns such as postcodes to text.

2. Write the file for your reader. If your recipients are in Germany or France, export with a semicolon and decimal commas:

import csv

rows = [("name", "price"), ("Tee", "3,50"), ("Käse", "12,90")]
with open("products.csv", "w", encoding="utf-8-sig", newline="") as f:
    csv.writer(f, delimiter=";").writerows(rows)

With pandas:

df.to_csv("products.csv", sep=";", decimal=",", index=False, encoding="utf-8-sig")

# and reading such a file back
df = pd.read_csv("products.csv", sep=";", decimal=",")

The utf-8-sig encoding adds the byte order mark so that Excel reads umlauts correctly. See why Japanese (and any non-ASCII) text turns garbled in Excel.

3. Add a sep= hint. Excel honors a first line of sep=; (or sep=,) that tells it which delimiter to use. Other tools may show that line as data, so use it only for files meant to be opened in Excel.

4. Change the setting (last resort). In Windows regional options, the list separator can be changed. It affects all programs, so we usually do not recommend it.

Other things Excel does to European data

Quick checklist

Excel's menus and defaults can vary by version and platform.

FAQ

Why does Excel use the system setting instead of detecting commas?

Double-clicking a CSV makes Excel apply the regional list separator. That is why the same file behaves differently on different PCs. Importing with From Text/CSV lets you choose the delimiter explicitly.

Can I make one file that works everywhere?

Not perfectly. The sep= first line helps Excel, but other tools may treat it as data. If your audience is mixed, offer a UTF-8 file, state the delimiter, or provide an .xlsx export.

Why did my postcode 01067 become 1067?

Excel treats the column as a number and drops the leading zero. Import the column as text, or format the cells as text before pasting.

Keep reading