ExcelTool.io

Excel to CSV Converter

Upload an Excel workbook, choose a sheet, preview the CSV, and download the result.

Drop your files here or click to upload

Supports .xlsx, .xls, .xlsm, .xlsb · up to 50MB · or paste a file from your clipboard

How to Convert Excel to CSV

  1. Drop in a workbook - .xlsx, .xls, .xlsm and .xlsb are all read, in the browser.
  2. Choose the sheet - a workbook with more than one sheet gets a dropdown next to the file name. CSV holds one grid, so one sheet is exported at a time.
  3. Check the preview - the first 100 lines of the actual output are shown, not a re-rendered table, so what you read is what downloads.
  4. Download - the file keeps the workbook's name with a .csv extension.

What the export writes

One line per worksheet row, fields separated by commas, rows separated by a line feed. A field is quoted only when it needs to be - that is, when it contains a comma, a double quote or a line break - and a double quote inside a quoted field is written twice. Empty cells produce nothing at all between the commas.

Region,Note,Revenue
North,"Q1, revised",42000
South,"He said ""ship it""",36500.5
East,,

Numbers are written with floating-point noise trimmed to twelve significant digits, so a subtraction the workbook displays as 57.81 exports as 57.81 rather than 57.809999999999945. The CSV and the site's viewer always agree on a number.

Encoding, and why the byte order mark matters

The download is UTF-8. When the text is entirely ASCII it is written with nothing in front of it; when it contains any non-ASCII character - an accent, a currency symbol, a name in a non-Latin script - a three-byte UTF-8 byte order mark is added first.

That is not decoration. Excel on Windows opens a double-clicked .csv using the system ANSI code page unless a mark tells it otherwise, so a correctly exported Café would come back as Café. Adding the mark only when the file needs it keeps ASCII exports byte-for-byte plain for the scripts and loaders that have never had to cope with one.

How each kind of cell exports

In the workbookIn the CSV
15/03/2023 (a date)45000 - the serial number behind it
09:30 (a time)0.395833333333 - a fraction of a day
$1,234.501234.5
15%0.15
=SUM(A1:A9)The cached result, not the formula
TRUEtrue, lower case
#N/A, #DIV/0!An empty field
A merged rangeThe value once, in the top-left cell; the rest empty

Edge cases

  • Batch mode exports the first sheet.Dropping two or more workbooks converts each one's first sheet and returns a ZIP; the sheet dropdown belongs to the single-file path.
  • The used range is exported whole. Blank rows above the table and blank columns to its left come out as empty fields, because they are inside the range the workbook declares.
  • Hidden rows and columns are still exported. Hiding is a display setting; the data is still there.
  • Leading zeros survive if they were text. A ZIP code stored as text exports as 01234. One stored as a number was already 1234 in the workbook and exports that way.
  • Long numbers are written in full. A 16-digit card number stored as a number will have been rounded by Excel itself long before this page sees it; store such values as text.
  • A stray carriage return on its own inside a cell does not trigger quoting, only a line feed does. It is rare, and worth knowing if your consumer is a strict RFC 4180 parser.

When to use a different tool

  • You want every sheet as its own file: Excel Splitter first, then convert the pieces.
  • Your target needs tabs rather than commas: Excel to TSV.
  • Going the other way: CSV to Excel, or CSV Viewer to check a file before importing it.
  • You need structure rather than a flat grid: Excel to JSON.
  • The workbook needs tidying first - stray blank rows, trailing spaces, duplicate keys: Excel Cleaner.

What's next?

Keep going with one of these tools.

Frequently Asked Questions

Related Tools