User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Drop your .xlsx file here or click to browse Max 50 MB · Multi-sheet supported
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

XLSX files encode cell data across multiple XML documents compressed inside a ZIP archive. Extracting structured JSON from this format requires parsing shared string tables, resolving cell references in base-26 notation, and mapping row data against configurable key rows. Incorrect parsing produces silent data corruption - missing columns, shifted values, or type coercion errors that propagate downstream into databases and APIs. This tool performs real binary decompression and XML traversal in the browser. It supports custom keysRow assignment, explicit column-to-field mapping, and a configurable dataStartingRow parameter. Multi-sheet workbooks are handled as a three-dimensional structure: jsonArray[sheets][rows][cellValues].

The converter resolves shared strings from xl/sharedStrings.xml, reads cell types (string, number, boolean, date), and reconstructs sparse rows where empty cells exist. Limitations: password-protected workbooks and macro-enabled content (.xlsm) are not supported. Merged cell regions are read from the top-left cell only. Date serial numbers are converted assuming the 1900 date system (not the 1904 system used by some legacy Mac workbooks). Pro tip: if your spreadsheet uses formulae, only the cached result values are extracted - volatile functions may show stale data.

xlsx to json excel converter spreadsheet to json xlsx parser excel json online

Formulas

Column letter references in XLSX are base-26 encoded. The conversion from a column string s of length n to a zero-based index i follows:

i = nโˆ‘k=0 ( charCode(sk) โˆ’ 64 ) ร— 26n โˆ’ 1 โˆ’ k โˆ’ 1

Where sk is the k-th character of the column string (e.g., "A" = 65 in ASCII, so charCode โˆ’ 64 = 1). The subtraction of 1 converts from one-based to zero-based indexing.

Excel date serial numbers are converted to ISO-8601 dates using the offset from the epoch 1899-12-30:

date = Date(1899-12-30) + serialNumber ร— 86400000 ms

Where serialNumber is the numeric cell value. Note: the 1900 date system contains an intentional Lotus 1-2-3 compatibility bug treating 1900 as a leap year. Serial number 60 (1900-02-29) does not exist. Values โ‰ค 60 are offset by 1 day.

The JSON assembly follows the structure result = sheets[] โ†’ rows[] โ†’ object{key: value}. When keysRow is specified, cell values from that row become property names. When mapping is provided, it overrides keysRow with explicit field-to-column bindings.

Reference Data

XLSX Internal FilePurposeKey Data Extracted
[Content_Types].xmlArchive manifestContent type declarations for all parts
xl/workbook.xmlWorkbook structureSheet names, sheet order, rId references
xl/_rels/workbook.xml.relsRelationship maprId โ†’ sheet file path mapping
xl/sharedStrings.xmlString deduplication tableAll unique string values referenced by index
xl/worksheets/sheet1.xmlSheet cell dataRow/column references, values, types
xl/styles.xmlCell formattingNumber formats (used for date detection)
Cell Type AttributeMeaningJSON Output Type
t = "s"Shared string referenceString (resolved from table)
t = "b"BooleanTRUE / FALSE
t = "n" or absentNumberNumber (float or integer)
t = "e"Error valueString (e.g., "#REF!")
t = "str"Inline formula stringString (formula result)
t = "inlineStr"Inline rich textPlain text (tags stripped)
Column LetterZero-Based IndexBase-26 Calculation
A01 โˆ’ 1
Z2526 โˆ’ 1
AA2626 ร— 1 + 1 โˆ’ 1
AZ5126 ร— 1 + 26 โˆ’ 1
BA5226 ร— 2 + 1 โˆ’ 1
XFD16383Maximum column in XLSX (Excel 2007+)
OptionTypeDescription
sheetNumber / String / ArrayZero-based index, sheet name, or array of either. If unset, all sheets exported.
keysRowNumber (one-based)Row whose cell values become JSON object keys
dataStartingRowNumber (one-based)First row of actual data (rows above are skipped)
mappingObjectExplicit fieldName โ†’ column letter mapping

Frequently Asked Questions

Merged cell regions in XLSX are defined in the elements within each worksheet XML. Only the top-left cell of a merged region contains the actual value. All other cells in the region are empty. The converter reads the value from the top-left cell and does not replicate it across the merged range. If your keys row contains merged cells, only the leftmost column of each merge will have a key assigned.
Excel stores dates as serial numbers (days since 1899-12-30). The converter detects date-formatted cells by inspecting the style index and cross-referencing it with the number format codes in xl/styles.xml. Recognized date formats (format IDs 14-22 and custom patterns containing "yy", "mm", 'dd') trigger conversion to ISO-8601 strings. If the format is ambiguous, the raw numeric value is preserved. Toggle the "Detect Dates" option to control this behavior.
Excel displays formatted values (e.g., 2 decimal places) but stores the full-precision float. The converter extracts the stored value, not the display value. A cell showing "3.14" might store 3.14159265358979. Conversely, a cell displaying "100%" stores 1. The converter outputs the raw stored value. Apply rounding in your downstream processing if needed.
XLSX supports up to 1,048,576 rows per sheet. The converter processes files entirely in browser memory. For workbooks exceeding approximately 50 MB compressed (which can decompress to several hundred MB of XML), you may encounter browser memory limits. Chrome typically allows 2-4 GB per tab. Files with 500,000+ rows of dense data will work but may take 10-30 seconds. A progress indicator is displayed during processing.
When both keysRow and mapping are provided, mapping takes precedence. The mapping object defines explicit field names (e.g., {"name": "A", "age": "C"}), bypassing the keys row entirely. If only keysRow is set, cell values from that row become JSON property keys. If neither is set, columns are indexed numerically (0, 1, 2, ...). Empty cells in the keys row produce keys like "column_3" as fallbacks.
Only cached computed values are extracted. XLSX stores formula expressions in the element and their last-calculated result in the element. The converter reads exclusively. Volatile functions (NOW(), RAND(), INDIRECT()) may show stale values if the workbook was saved without recalculation. Open the file in Excel and press Ctrl+Shift+F9 to force full recalculation before converting.