Excel to CSV / JSON

Extract data tables out of an .xlsx spreadsheet privately, in your browser, with nothing uploaded.

Drop an Excel file here and get its tables back as CSV or JSON. An .xlsx file is a ZIP archive of XML parts (Office Open XML, ISO/IEC 29500): the workbook part names the sheets, each sheet part holds its cells, and a shared-strings part holds the text that cells point at by number. This tool unzips the file in your browser, follows those links, and rebuilds each sheet as a table. Nothing is uploaded. The older binary .xls format is not a ZIP of XML, so it is not supported here.

One file at a time. Very large workbooks take a few seconds to unzip and parse.

Excel serial date helper

Excel stores dates as serial numbers, days since its epoch, so a date cell may appear here as a number such as 45658. Type a serial to see the calendar date. Excel counts from 1899-12-30 for serials of 60 and above, and the helper adjusts for the pre-March-1900 range, where Excel wrongly treats 1900 as a leap year.

Honest limits. This tool reads cell values and shared strings; it does not reproduce formatting, formulas are shown as their last calculated value (a file saved without calculated values shows a blank for that cell), and merged cells appear only in their top-left cell, with the other cells empty. Date cells appear as serial numbers, because the tool does not read the style table that marks a cell as a date: use the helper above to convert one. Charts, images and pivot tables are not extracted. The .xls binary format and password-protected files are not supported.

How an .xlsx file stores a table

An .xlsx file is a ZIP archive of XML parts under Office Open XML (ECMA-376, ISO/IEC 29500). The workbook part, xl/workbook.xml, lists the sheets by name and by relationship id. The workbook relationships part, xl/_rels/workbook.xml.rels, maps each id to a sheet part such as xl/worksheets/sheet1.xml. Each sheet part holds rows of cells, and each cell carries a reference such as B3 and a type: a cell with type s holds an index into xl/sharedStrings.xml, where the actual text sits once, shared by every cell that uses it; a cell with type str holds a formula result string; a cell with type inlineStr holds its text inline in an is element; a cell with type b holds a boolean; a cell with type e holds an error; and a cell with no type holds a number. Following those three links, workbook to relationship to sheet, and sheet to shared strings, is the whole extraction job.

Two quirks deserve a plain statement. First, Excel dates are numbers: the serial counts days from 1899-12-30 (for serials of 60 and above), a legacy of the Lotus 1-2-3 decision to treat 1900 as a leap year, which Excel kept for compatibility. A cell that shows 1 January 2025 in Excel therefore stores 45658, and only the style table says to display it as a date. Second, CSV has its own rule, RFC 4180: a field that contains a comma, a quote or a line break is wrapped in double quotes, and a double quote inside a field is doubled. The CSV download here follows that rule, so a spreadsheet round-trips through Excel, Google Sheets and LibreOffice without splitting a field at an inner comma.

Why shared strings exist

A workbook with the same product name in ten thousand rows stores that name once in sharedStrings.xml and points at it by index from every cell. It keeps files small, and it is why a naive reader that only looks at sheet XML finds numbers where it expected words. This tool resolves every shared-string index before it builds the table.

Why nothing is uploaded

Spreadsheets often hold payroll, prices or customer lists. Unzipping and parsing in the browser means the workbook is never sent anywhere, so there is no server copy to leak and no retention policy to trust.

Frequently Asked Questions

Choose a .xlsx file on this page, press Extract tables, pick a sheet, then press Download CSV. The CSV follows RFC 4180: fields with a comma, quote or line break are wrapped in double quotes, and inner quotes are doubled, so the file opens cleanly in Excel, Google Sheets and LibreOffice.
Extract the file the same way, then press Download JSON. With the header option on, the first row becomes the object keys and each later row becomes one object. With it off, the JSON is an array of row arrays.
Because Excel stores dates as serial numbers, days since 1899-12-30 for serials of 60 and above, and only the style table marks a cell as a date. This tool reads values, not styles, so it shows the serial. Type the serial into the helper on the page to see the calendar date.
Because the tool shows the last calculated value stored in the file, and some files are saved without calculated values. Open the file in Excel or LibreOffice, let it recalculate, save it, and extract again.
No. The older .xls format from Excel 97 to 2003 is a binary file, not a ZIP of XML parts. Open it in Excel or LibreOffice and save it as .xlsx, then convert the new file.
No. The unzipping and the parsing run in your browser. The file never leaves your device.

Related Tools

Was this tool helpful?

Comments

Loading comments...

Check Out Other Popular Tools