Excel to JSON Converter

Upload an Excel file (.xlsx or .xls) to convert a sheet to JSON

How to convert an Excel sheet to JSON

The result is an array with one object per row, indented with two spaces. Keys appear in the same order as the columns, even when a header looks like a number, such as 2024. Notes above the output say how many rows were converted and whether anything was skipped or renamed.

A worked example

This is a sheet called Orders, as it looks in Excel:

ABCDEFGH
1Order IDCustomerOrder dateTotalPaidShipped atTotal
21001Ana Silva2024-02-14$149.90TRUE2024-02-15 13:45150gift wrap
3
41002Ben Okafor16/2/202415%FALSE#DIV/0!

With headers on, the converter shows these notes:

and produces this JSON:

[
  {
    "Order ID": 1001,
    "Customer": "Ana Silva",
    "Order date": "2024-02-14",
    "Total": 149.9,
    "Paid": true,
    "Shipped at": "2024-02-15T13:45:00",
    "Total (2)": 150,
    "Column H": "gift wrap"
  },
  {
    "Order ID": 1002,
    "Customer": "Ben Okafor",
    "Order date": "2024-02-16",
    "Total": 0.15,
    "Paid": false,
    "Shipped at": null,
    "Total (2)": "#DIV/0!",
    "Column H": null
  }
]

The empty row 3 is left out, the second "Total" column becomes "Total (2)" so no value is overwritten, and the column without a header gets its letter. The dollar sign and the percent format disappear: JSON receives the number stored in the cell, not the way it is displayed.

How each kind of cell is converted

Cell in ExcelShown asJSON value
TextAna Silva"Ana Silva"
Number, in any number format$149.90 or 15%149.9 or 0.15
TRUE / FALSETRUEtrue
Date16/2/2024"2024-02-16"
Date and time2024-02-15 13:45"2024-02-15T13:45:00"
Time of day13:45"13:45:00"
Elapsed time, format [h]:mm:ss36:00:00"36:00:00"
Error#DIV/0!"#DIV/0!"
Empty cellnull

A cell counts as a date or time when its number format displays one. Formulas are exported as the result saved in the file, not as the formula itself. The columns run from the leftmost to the rightmost column that has a value, and with headers on, the first row that contains anything supplies the keys.

Header text is kept exactly as written, with its spaces, dots and capital letters, so Order ID stays Order ID. If your code expects names such as orderId, rename the headers in Excel or map the keys after conversion.

Dates have no time zone

Excel stores a date as a number of days and a time as a fraction of a day, with no time zone attached. The converter turns that number into ISO 8601 text without a Z or an offset, so 2024-02-15T13:45:00 means 13:45 on the clock of whoever typed it. The result is the same on every computer. If the times belong to a particular zone, add that information when you import the JSON.

Common pitfalls

Frequently asked questions

Can I convert a CSV file?

Not directly. Only real Excel workbooks are accepted; a CSV or another format is rejected with a message. Open it in Excel or another spreadsheet program and save it as .xlsx first.

Can it read password-protected workbooks?

No. An encrypted workbook cannot be read without the password, so the converter asks you to remove the password in Excel and choose the file again.

Does it convert all sheets at once?

It converts one sheet at a time. Choose another sheet in the list and the output updates immediately, without reading the file again.

How do I get the data back into a spreadsheet?

Use the JSON to Excel converter, which turns an array of objects into an .xlsx file with one column per key.