User Rating 0.0
Total Usage 0 times

Drag & drop your .xlsx file here

or click to browse (max 50 MB)

Is this tool helpful?

Your feedback helps us improve.

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.

xlsx to csv excel to csv spreadsheet converter csv converter xlsx converter file converter excel converter online

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:

D = DateFromEpoch(S 25569)

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:

{
"field" if field contains , or " or \nfield otherwise

Internal double-quote characters are escaped by doubling: " "". The column reference in XLSX cells (e.g., AA5) is decoded from base-26:

col = ni=0 (ci 64) × 26ni

Where ci is the ASCII code of the i-th character in the column letter string, and the result is 1-indexed.

Reference Data

FeatureXLSX (Office Open XML)CSV (RFC 4180)
File StructureZIP archive with XML entriesPlain text, single flat file
CompressionDEFLATE (per entry)None
Max Columns16,384 (XFD)Unlimited (parser-dependent)
Max Rows1,048,576Unlimited
Multiple SheetsYesNo (one table per file)
Data TypesString, Number, Boolean, Date, Formula, ErrorText only (all values are strings)
EncodingUTF-8 (XML)UTF-8 (recommended), ASCII, Latin-1
Date StorageSerial number (days since epoch)Text representation
Formula SupportYes (cached value + expression)No (value only)
Cell FormattingStyles, fonts, colors, bordersNone
Standard DelimiterN/A (XML tags)Comma (,)
Field Quoting (RFC 4180)N/ADouble quotes for fields with special chars
Quote EscapingN/ADouble the quote: ""
Line EndingsN/ACRLF (\r\n) per RFC
MIME Typeapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheettext/csv
File Extension.xlsx.csv
Typical Size (10k rows)~200 - 500 KB~500 - 2000 KB
Excel EpochJan 0, 1900 (serial 1 = Jan 1, 1900)N/A
Leap Year BugFeb 29, 1900 treated as valid (serial 60)N/A
Shared StringsDeduplicated in sharedStrings.xmlRepeated inline
Boolean Values0 / 1 with type="b"TRUE / FALSE (text)

Frequently Asked Questions

Excel stores dates as floating-point numbers counting days from January 1, 1900 (serial 1). The converter detects cells with date-type number formats (patterns containing y, m, d tokens) and converts the serial number to an ISO 8601 date string (YYYY-MM-DD). It accounts for the intentional Lotus 1-2-3 bug where serial 60 maps to the non-existent February 29, 1900. Times are represented as fractional days; serial 0.5 equals 12:00 noon.
XLSX files store both the formula expression and its last cached (calculated) value. This converter extracts the cached value only, since CSV has no formula engine. If a cell contains =SUM(A1:A10) with a cached result of 450, the CSV output will contain 450. Cells that were never recalculated in Excel may have stale cached values.
The converter follows RFC 4180 strictly. Any field containing commas, double quotes, or newline characters is enclosed in double quotes. Double-quote characters within a field are escaped by doubling them (" becomes ""). This applies regardless of the selected delimiter - if a semicolon delimiter is chosen, fields containing semicolons are quoted instead.
Yes. After uploading, the converter parses all sheet definitions from the workbook XML. A dropdown selector appears listing all sheets by name. Each sheet is converted independently. Since CSV is a single-table format, you download one CSV per sheet. The default selection is the first sheet.
The converter processes files up to 50 MB in the browser using a Web Worker to avoid UI freezing. Actual performance depends on your device memory and the uncompressed size of the XML within the archive. A 50 MB XLSX file can decompress to several hundred megabytes of XML. For files with over 500,000 rows, expect processing times of 10-30 seconds on modern hardware.
No. The entire conversion happens client-side using JavaScript. The file is read into an ArrayBuffer via the FileReader API, decompressed, parsed, and converted to CSV entirely in your browser. No network requests are made. You can verify this by disconnecting from the internet before converting.
Merged cells in XLSX have a value only in the top-left cell of the merge range. All other cells in the range are empty. The converter outputs the value in the top-left cell position and leaves the remaining cells in the merge range empty in the CSV. No cell duplication or fill is performed, as CSV has no concept of cell merging.