XLSX to CSV Converter
Convert XLSX Excel files to CSV format instantly in your browser. No upload to servers, supports multiple sheets, custom delimiters, and RFC 4180 compliance.
Drag & drop your .xlsx file here
or click to browse (max 50 MB)
View Raw CSV
About
XLSX files store data in a compressed XML archive (Office Open XML, ECMA-376). Extracting tabular data from this format requires decompressing ZIP entries, parsing shared string tables, resolving cell references, and converting Excel serial date numbers (epoch: January 0, 1900, with the intentional Lotus 1-2-3 leap year bug on Feb 29, 1900). A naive copy-paste approach loses date formatting, truncates Unicode characters, and mishandles cells containing delimiter characters. This tool performs real DEFLATE decompression and XML parsing entirely in your browser. No data leaves your machine.
Output follows RFC 4180: fields containing commas, double quotes, or line breaks are enclosed in quotes, with internal quotes escaped by doubling. The converter handles shared strings, inline strings, boolean values, and numeric cells. Pro tip: Excel stores dates as floating-point day counts from its epoch. A cell displaying "2024-03-15" is internally stored as 45366. This tool detects date-formatted cells and converts them to ISO 8601 strings. Limitation: this tool approximates date detection using common Excel number format patterns. Custom date formats with unusual masks may not be detected.
Formulas
The XLSX format stores dates as floating-point serial numbers. The conversion from an Excel serial number S to a calendar date uses the following offset logic:
Where S is the Excel serial day number, 25569 is the offset between the Excel epoch (Jan 1, 1900) and the Unix epoch (Jan 1, 1970), adjusted for the Lotus 1-2-3 leap year bug (serial 60 maps to the non-existent Feb 29, 1900). For serials ≤ 60, the offset is 25568.
CSV field escaping follows RFC 4180:
Internal double-quote characters are escaped by doubling: " → "". The column reference in XLSX cells (e.g., AA5) is decoded from base-26:
Where ci is the ASCII code of the i-th character in the column letter string, and the result is 1-indexed.
Reference Data
| Feature | XLSX (Office Open XML) | CSV (RFC 4180) |
|---|---|---|
| File Structure | ZIP archive with XML entries | Plain text, single flat file |
| Compression | DEFLATE (per entry) | None |
| Max Columns | 16,384 (XFD) | Unlimited (parser-dependent) |
| Max Rows | 1,048,576 | Unlimited |
| Multiple Sheets | Yes | No (one table per file) |
| Data Types | String, Number, Boolean, Date, Formula, Error | Text only (all values are strings) |
| Encoding | UTF-8 (XML) | UTF-8 (recommended), ASCII, Latin-1 |
| Date Storage | Serial number (days since epoch) | Text representation |
| Formula Support | Yes (cached value + expression) | No (value only) |
| Cell Formatting | Styles, fonts, colors, borders | None |
| Standard Delimiter | N/A (XML tags) | Comma (,) |
| Field Quoting (RFC 4180) | N/A | Double quotes for fields with special chars |
| Quote Escaping | N/A | Double the quote: "" |
| Line Endings | N/A | CRLF (\r\n) per RFC |
| MIME Type | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | text/csv |
| File Extension | .xlsx | .csv |
| Typical Size (10k rows) | ~200 - 500 KB | ~500 - 2000 KB |
| Excel Epoch | Jan 0, 1900 (serial 1 = Jan 1, 1900) | N/A |
| Leap Year Bug | Feb 29, 1900 treated as valid (serial 60) | N/A |
| Shared Strings | Deduplicated in sharedStrings.xml | Repeated inline |
| Boolean Values | 0 / 1 with type="b" | TRUE / FALSE (text) |