The short answer
When you double click a CSV file, Excel opens it with assumptions taken from your computer, not from the file: it reads the text in your system's legacy encoding, splits columns on the list separator from your regional settings, and converts anything that looks like a number or a date. Any of these can go wrong. Importing the file through the Data tab lets you set each of them yourself.
The quicker route is the converter below. Open or paste the CSV, keep Convert to on Excel and press Download. The separator is detected from the file, numbers are stored as real numbers, dates are written as text, and codes with leading zeros stay text, so the .xlsx opens correctly on any computer.
Try it here: CSV to Excel
Open the full tool pageWhy CSV files open wrong in Excel
CSV is plain text with no settings inside. It does not say which encoding it uses, which character separates the columns, or which columns are codes rather than numbers. Excel has to guess, and its guesses depend on the language settings of the computer that opens the file. That is why the same file looks fine for a colleague and broken for you.
The classic symptoms each have their own cause:
| Symptom | Cause | Fix |
|---|---|---|
| é, ü, ñ instead of é, ü, ñ | UTF-8 file read in a legacy Windows encoding | Import with File Origin set to 65001: Unicode (UTF-8) |
| Everything in column A | File uses commas, your Excel expects semicolons (or the reverse) | Choose the delimiter in the import dialog |
| 00123 becomes 123 | Code column converted to a number | Set that column to Text before loading |
| 8690000123456 shows as 8.69E+12 | Long number shown in scientific notation | Set the column to Text |
| 1-2 or MAR1 becomes a date | Automatic date conversion | Set the column to Text, or turn conversion off |
| Card or ID numbers end in 000 | Excel keeps only 15 significant digits | Set the column to Text before loading; the digits cannot be recovered afterwards |
Step by step: importing in Excel for Windows
These steps are for Excel in Microsoft 365, 2021, 2019 and 2016 on Windows. Start from an empty workbook rather than double clicking the file.
- Go to Data, then From Text/CSV, and choose the file.
- In the preview window, set File Origin to 65001: Unicode (UTF-8) if letters look wrong.
- Set Delimiter to Comma, Semicolon or Tab, whichever makes the preview split into proper columns.
- If the file has codes, barcodes, phone numbers or IDs, set Data Type Detection to Do not detect data types, or click Transform Data and change those columns to Text.
- Click Load. The data arrives as a table that you can refresh later if the CSV file changes.
Mac, Google Sheets and the legacy wizard
- Excel for Mac: use File, Import, choose CSV file, then follow the Text Import Wizard. Pick Delimited, set File origin to Unicode (UTF-8), tick the right delimiter, and in the last step select code columns and set them to Text.
- Legacy wizard on Windows: if you prefer the old three step wizard, enable it in File, Options, Data (Show legacy data import wizards), then use Data, Get Data, Legacy Wizards, From Text (Legacy).
- Google Sheets: File, Import, Upload. Leave Separator type on Detect automatically and untick Convert text to numbers, dates, and formulas if you need leading zeros kept.
- Recent Microsoft 365 versions also have Automatic Data Conversion under File, Options, Data, where you can stop Excel from removing leading zeros, using scientific notation and turning text into dates. It changes how Excel behaves for every file, so it is a good permanent fix if you open CSV exports every day.
Commas, semicolons and your regional settings
In the United States and the United Kingdom the decimal sign is a point, so CSV files use commas between columns. In most of Europe, Turkey and much of Latin America the decimal sign is a comma, so Windows sets the list separator to a semicolon, and Excel both reads and saves CSV files with semicolons. A comma separated export from an American platform then lands in one column, and a file you save goes out with semicolons the platform cannot read.
You can see your setting in Windows under Control Panel, Region, Additional settings, List separator. Changing it affects every program on the computer, so importing with an explicit delimiter, or converting to .xlsx, is usually the better fix.
Decimal numbers have the same problem. 1.499,90 means one thousand four hundred ninety nine and ninety cents in Turkish or Spanish notation but is not a number at all in US settings. The converter on this page reads numbers like 1.499,90 correctly in semicolon separated files and stores them as real numbers in the workbook.
What the converter keeps that a double click loses
The .xlsx file is a real Excel workbook, not a renamed CSV. The header row is bold and frozen, so it stays visible while you scroll, columns get readable widths, and numbers are stored as numbers so sums, filters and sorting work immediately.
Column types are decided per column, not per cell. A column where values start with zero (barcodes, postal codes, product codes) stays text as a whole, and numbers longer than 15 digits stay text so no digits are rounded away. The preview shows the first 100 rows before you download; the file contains all of them.
One limit to know: the converter reads CSV files as UTF-8, which is what nearly all modern platforms export. If an old program saved the file in a legacy Windows encoding and letters still look wrong, open it in Notepad, choose Save As with UTF-8 encoding, and convert that copy.
Saving back to CSV without breaking it
If you need to upload the edited data again, use File, Save As and pick CSV UTF-8 (Comma delimited). The plain CSV (Comma delimited) option uses the legacy encoding and can turn accented letters into question marks. Remember that Excel writes the list separator from your regional settings, so check the file in a text editor if the platform insists on commas.
Columns you imported as text are saved with their leading zeros. Columns Excel already converted are saved as they look, so a barcode shown as 8.69E+12 is written exactly like that. Fix the column type before saving, not after.