How to Convert XLSX to CSV: 6 Proven Methods

CSV (Comma-Separated Values) is the universal data exchange format. Unlike XLSX, it works with any programming language, database, and operating system without special libraries. This guide covers six ways to convert Excel spreadsheets to CSV — from one-click online tools to scripted batch workflows — and how to handle the common pitfalls: encoding errors, delimiter mismatches, and multi-sheet workbooks.

Convert XLSX to CSV Online

Upload your Excel file and download CSV instantly

XLSX CSV

Tap to choose your file

or

Supports M4A, WAV, FLAC, OGG, AAC, WMA, AIFF, OPUS • Max 100 MB

Encrypted upload via HTTPS. Files auto-deleted within 2 hours.

XLSX vs CSV: What Changes

Before converting, understand what CSV preserves and what it drops:

Feature XLSX CSV
Cell values (text, numbers)YesYes
FormulasYes (stored)No (only computed values)
Formatting (bold, colors)YesNo
Multiple sheetsYesNo (one sheet per file)
Charts and imagesYesNo
Data types (dates, currency)Yes (typed cells)Plain text only
File size (1000 rows)~50–200 KB~10–50 KB
Universal compatibilityNeeds Excel/readerAny text editor

If you only need the raw data — for database import, data analysis, or cross-platform sharing — CSV is the right choice. If you need to preserve formatting, formulas, or multiple sheets, keep the XLSX format.

Method 1: Online Converter (Convertio)

The fastest method. No software to install, works on any device with a browser.

  1. Go to convertio.com/xlsx-to-csv
  2. Click Choose XLSX File or drag and drop your spreadsheet
  3. Click Convert
  4. Download the resulting CSV file

Best for: Quick one-off conversions. No installation needed. Files are encrypted during upload and automatically deleted within 2 hours.

Method 2: Microsoft Excel

If you already have Excel installed, you can export directly:

  1. Open the .xlsx file in Excel
  2. If the workbook has multiple sheets, click the sheet tab you want to export
  3. Go to File → Save As (or File → Save a Copy in newer versions)
  4. In the “Save as type” dropdown, select CSV (Comma delimited) (*.csv)
  5. Choose your save location and click Save
  6. Excel will warn that some features are not compatible with CSV — click Yes to continue

Excel offers several CSV variants in the Save As dialog:

Option Encoding Delimiter Best For
CSV (Comma delimited)System default (often Windows-1252)CommaUS/UK English data
CSV UTF-8 (Comma delimited)UTF-8 with BOMCommaInternational characters
CSV (Macintosh)Mac RomanCommaLegacy macOS apps
CSV (MS-DOS)OEM/DOS codepageCommaLegacy DOS programs

Tip: Always choose CSV UTF-8 if your data contains accented characters, CJK text, or any non-ASCII symbols. The plain “CSV (Comma delimited)” uses a locale-specific encoding that may corrupt special characters on other systems.

Method 3: Google Sheets

Free and available on any platform with a browser:

  1. Open sheets.google.com and upload your XLSX file (File → Open → Upload)
  2. Google Sheets imports the workbook and preserves most formatting visually
  3. Select the sheet tab you want to export
  4. Go to File → Download → Comma Separated Values (.csv)
  5. The current sheet downloads as a .csv file

Google Sheets always exports CSV in UTF-8 encoding, which is the safest choice for international data. The delimiter is always a comma regardless of your locale settings.

Method 4: LibreOffice Calc

LibreOffice is free, open-source, and available on Windows, macOS, and Linux. It gives you the most control over CSV export settings.

  1. Open the .xlsx file in LibreOffice Calc
  2. Go to File → Save As
  3. Select Text CSV (.csv) as the format
  4. Click Use Text CSV Format when prompted
  5. In the export dialog, configure:
    • Character set: Unicode (UTF-8)
    • Field delimiter: comma , (or semicolon, tab)
    • Text delimiter: double-quote "
  6. Click OK

Batch Conversion via Command Line

LibreOffice supports headless (no GUI) mode, making it ideal for batch processing:

Bash
# Convert a single file
libreoffice --headless --convert-to csv report.xlsx

# Convert all XLSX files in current directory
libreoffice --headless --convert-to csv *.xlsx

# Specify output directory
libreoffice --headless --convert-to csv --outdir ./csv-output/ *.xlsx

Note: LibreOffice headless mode only exports the first sheet. For multi-sheet workbooks, use a Python script (Method 5) or convert each sheet manually.

Method 5: Python (pandas)

Python with the pandas library is the best option for automated, repeatable, or batch conversions. It handles multi-sheet workbooks, encoding, and custom delimiters natively.

Basic Conversion

Python
import pandas as pd

# Read the first sheet and save as CSV
df = pd.read_excel("report.xlsx")
df.to_csv("report.csv", index=False, encoding="utf-8-sig")

Convert All Sheets to Separate CSV Files

Python
import pandas as pd

xlsx = pd.ExcelFile("workbook.xlsx")

for sheet_name in xlsx.sheet_names:
    df = pd.read_excel(xlsx, sheet_name=sheet_name)
    filename = f"{sheet_name}.csv"
    df.to_csv(filename, index=False, encoding="utf-8-sig")
    print(f"Saved {filename}")

Batch Convert Multiple XLSX Files

Python
import pandas as pd
from pathlib import Path

for xlsx_file in Path(".").glob("*.xlsx"):
    df = pd.read_excel(xlsx_file)
    csv_file = xlsx_file.with_suffix(".csv")
    df.to_csv(csv_file, index=False, encoding="utf-8-sig")
    print(f"{xlsx_file}{csv_file}")

Install: pip install pandas openpyxl — the openpyxl engine is required for reading .xlsx files. It is used automatically by pandas when installed.

Method 6: Command Line Tools

For server environments, CI/CD pipelines, or scripted workflows where you cannot open a GUI.

ssconvert (Gnumeric)

A lightweight command-line spreadsheet converter included with Gnumeric:

Bash
# Install on Ubuntu/Debian
sudo apt install gnumeric

# Convert single file
ssconvert report.xlsx report.csv

# Export all sheets (creates report.csv.0, report.csv.1, etc.)
ssconvert -S report.xlsx report.csv

# Batch convert all XLSX files
for f in *.xlsx; do ssconvert "$f" "${f%.xlsx}.csv"; done

csvkit (in2csv)

A Python-based toolkit specifically designed for CSV operations:

Bash
# Install
pip install csvkit

# Convert (first sheet by default)
in2csv report.xlsx > report.csv

# Specify a sheet by name
in2csv --sheet "Sales Q4" report.xlsx > sales-q4.csv

# List all sheet names
in2csv --names report.xlsx

Common Issues and How to Fix Them

Encoding Problems (Garbled Characters)

The most common issue. Accented characters (é, ü, ñ), CJK text, or symbols like appear as é, ???, or other garbled text.

Root cause: The CSV was saved in one encoding but opened in another. Excel on Windows defaults to the local codepage (e.g., Windows-1252 for Western European), not UTF-8.

Solution:

  • Always save as UTF-8 with BOM (byte order mark). The BOM signals to Excel and other applications that the file is UTF-8.
  • In Python: use encoding="utf-8-sig" (UTF-8 with BOM) instead of encoding="utf-8"
  • When opening a CSV in Excel: use Data → From Text/CSV import wizard, which lets you select the encoding before importing

Delimiter Mismatches

Some European locales use semicolons (;) instead of commas as the CSV delimiter, because commas are used as decimal separators in those locales (e.g., 1.234,56 in German).

Symptoms: All data appears in a single column when opened in Excel, or numeric values are split across columns.

Solution:

  • Check your system locale: Windows users in German, French, or Italian locales may need semicolons
  • In Python: df.to_csv("file.csv", sep=";") for semicolon-delimited output
  • In LibreOffice: set the field delimiter explicitly during export
  • When importing: use the text import wizard and specify the correct delimiter

Multi-Sheet Workbooks

CSV format supports exactly one sheet per file. When converting a multi-sheet XLSX workbook, most tools export only the first (active) sheet.

Solution:

  • Export each sheet separately using the Python multi-sheet script above
  • Use ssconvert -S which automatically creates numbered CSV files for each sheet
  • In Excel or Google Sheets, manually switch tabs and export each one

Date and Number Formatting

Dates and numbers can change when converting to CSV because CSV has no concept of data types. A date like 2026-03-24 might become 46108 (Excel serial number) or 3/24/2026 (locale-dependent format).

Solution:

  • Format date columns as text in the desired format before exporting (e.g., YYYY-MM-DD for ISO 8601)
  • In Python: df.to_csv(..., date_format="%Y-%m-%d")
  • For numbers, remove thousands separators and ensure consistent decimal format

Which Method Should You Use?

Method Speed Multi-Sheet Encoding Control Batch Best For
ConvertioInstantFirst sheetAuto (UTF-8)NoQuick one-off conversions
ExcelFastManual per sheet4 optionsNoDesktop users with Excel installed
Google SheetsMediumManual per sheetUTF-8 onlyNoChromebook / no desktop app
LibreOfficeFastFirst sheet (CLI)Full controlYes (CLI)Linux users, batch via CLI
PythonFastAll sheetsFull controlYesDevelopers, automation
CLI (ssconvert)FastAll sheets (-S)Default UTF-8YesServers, CI/CD pipelines

Ready to Convert?

Convert your Excel spreadsheet to CSV

XLSX CSV

Tap to choose your file

or

Supports M4A, WAV, FLAC, OGG, AAC, WMA, AIFF, OPUS • Max 100 MB

Frequently Asked Questions

Yes. CSV is a plain-text format that stores only cell values separated by commas. All formatting (bold, colors, borders, merged cells), formulas, charts, and images are stripped during conversion. Only the raw text and numeric values are preserved.

CSV supports only one sheet per file. You need to export each sheet as a separate CSV file. In Excel, select each sheet and save individually. In Python, loop through pd.ExcelFile().sheet_names and export each with to_csv(). On the command line, use ssconvert -S to export all sheets at once.

This is an encoding mismatch. The CSV was saved in one encoding (e.g., UTF-8) but opened in another (e.g., Windows-1252). Always save CSV files as UTF-8 with BOM for maximum compatibility. When opening in Excel, use the Data → From Text/CSV import wizard to select the correct encoding.

Yes. Use Python with pandas or openpyxl to batch-convert files in a loop. On Linux or macOS, use LibreOffice headless mode: libreoffice --headless --convert-to csv *.xlsx. You can also use ssconvert from the Gnumeric toolkit. All three methods work well for scheduled or bulk conversions.

Back to XLSX to CSV Converter