Formats
How do I convert XLSX to CSV without losing data?
Short answer
Prepare the sheet first, because CSV keeps only displayed values for one sheet. Check that cells hold the precision and text you want, then in Excel choose File > Save As and select CSV UTF-8 (Comma delimited). Export each sheet separately, and keep the XLSX original, since formulas, formatting and extra sheets are not stored in CSV.
You cannot keep everything. CSV has no place for formulas, formatting, charts, multiple sheets or data types. What you can do is make sure the values that CSV does store are exactly the ones you want. Excel writes each cell as it is displayed, so the preparation matters.
Prepare the workbook
- Decide which sheet you are exporting. Excel saves only the active sheet.
- Make sure values are what you want shown. Excel writes the formatted text, not the underlying number. A cell holding 0.125 formatted as a percentage is written as
12.5%, and a cell holding 1234.5 formatted as currency becomes"$1,234.50". - Increase decimals on numbers that need more precision than the format shows.
- Set dates to an unambiguous format, such as
yyyy-mm-dd, through Home > Number > More Number Formats > Custom. - Format ID columns that begin with zeros as Text, so
00123is written as00123. - Remove merged cells, blank header rows and notes above the table. A CSV reader expects one header row, then data.
- Delete rows and columns you do not want in the file. Hidden rows and columns are still written to the CSV.
Export from Excel
- Choose File > Save As and pick a location.
- In Save as type, select CSV UTF-8 (Comma delimited) (*.csv).
- Click Save, then OK when Excel warns that only the active sheet will be saved.
Avoid the plain CSV (Comma delimited) option. It uses the legacy Windows code page, so characters like é, ñ, ü and any non-Latin script can turn into question marks. The UTF-8 option keeps them, and writes a byte-order mark at the start of the file that Excel recognizes when reopening.
Your regional list separator decides whether the delimiter is a comma or semicolon. If the receiving system needs commas and your Excel writes semicolons, see why Excel puts a CSV in one column.
Export from other apps
- Google Sheets: File > Download > Comma-separated values (.csv). It exports the current sheet.
- LibreOffice Calc: File > Save As, set the type to Text CSV (.csv), and tick Edit filter settings. In the dialog choose UTF-8, the delimiter, and whether to save cell content as shown. Clear that box to write raw values with full precision. The dialog exports the current sheet.
- Numbers: File > Export To > CSV. You can choose one file per table or one combined file.
Worked example
A row in the sheet holds an ID 00123 formatted as Text, a price 1234.5 formatted as currency, a date 2026-10-08, a rate 0.125 formatted as a percentage, and a total formula =B2*1.08. Excel writes:
00123,"$1,234.50",2026-10-08,12.5%,1333.26
The price is quoted because it contains a comma. The formula is replaced by 1333.26 (1,234.5 multiplied by 1.08). The percentage and currency symbols are text now, which a database import may reject. If you want numeric columns, format them as plain numbers first: 1234.5 and 0.125.
Pitfalls
- The XLSX is your master. Keep it, and treat the CSV as a copy.
- Multiple sheets mean multiple exports, one per sheet.
- Line breaks inside cells are kept inside quoted fields, which some importers cannot handle.
- Check the result in a text editor, not in Excel, which would apply its own interpretation again.
- Dataset sheets such as the GDP by country table are already tidy, with one header row and one record per row, so they convert cleanly.
For the differences between the formats, see XLSX vs CSV.