XLSX to CSV
Nothing you choose here leaves your browser, and nothing is downloaded to make it work. An XLSX is a ZIP of XML; your browser already does the unzipping, and this page reads the rest.
A spreadsheet is a workbook; a CSV is one table. That is the whole difference.
Everything that makes a spreadsheet a spreadsheet — formulas, formatting, several sheets, charts — has nowhere to go in a CSV, and this page says exactly what your file will lose before you download anything. What you get back is the values, including the dates converted properly rather than left as the five-digit numbers they are stored as.
A date in a spreadsheet is a number, and that is where it goes wrong
There is no date type in a spreadsheet. The 15th of January 2026 is stored as 46037 — the number of days since the end of 1899 — and the only thing that marks it as a date rather than a quantity is a style index pointing at a number format somewhere else in the file. A converter that does not read the styles writes 46037 into your output, and it looks like data rather than like a fault.
This page reads the styles. It also knows that Excel believes 1900 was a leap year — it was not, but Lotus 1-2-3 thought so and files had to keep working — so dates before March 1900 are handled rather than being a day out.
How this was checked
Four real spreadsheets were read and every value compared against openpyxl, which is a completely separate implementation: 1,818 cells, zero mismatches. Two of the files were written by openpyxl, one was written by Excel and downloaded, and one was built by hand to exercise shared strings — because those three store text in three different ways and a reader that handles one works perfectly on whichever files its author happened to have.
Files written by this page were opened with openpyxl and checked with the
unzip command. What has not been done is
opening one in Excel itself, which is not available here — so if you
are producing something important, open it once before relying on it.
What it will not do
It reads .xlsx, which is the format Excel has
written since 2007. It does not read the older .xls, which is
a completely different binary format, nor .ods. It does not
open password-protected or encrypted workbooks, and it says so rather than
failing obscurely.
It does not calculate. A formula is converted as the value it last calculated to, because that is what is stored in the file — a workbook saved without calculating gives you blanks, and that is the file's doing rather than this page's.
Where to go next
- CSV to XLSX — the same conversion the other way
- XLSX to JSON — for code rather than for people
- XLSM to CSV — one table, readable by anything