Sheets become arrays
A sheet is already a table, so the mapping is natural: the first row names the properties and each row below becomes an object. Take a sheet called Products:
code | name | price | active
00042 | Desk lamp | 24.99 | true
00043 | Bookshelf | 120 | false If it is the only sheet in the workbook, the download is a plain array:
[
{ "code": "00042", "name": "Desk lamp", "price": 24.99, "active": true },
{ "code": "00043", "name": "Bookshelf", "price": 120, "active": false }
]
If the workbook also has a Categories sheet, the output becomes an object keyed by sheet name — { "Products": [ … ], "Categories": [ … ] } — so one file carries the whole workbook and your code can pick the sheet it needs.
Typing rules
The same rules as CSV to JSON apply. With Detect numbers and booleans ticked, cells that are clean numbers are written as JSON numbers and true/false as booleans. A value with a leading zero, such as the 00042 above, is kept as a string on purpose: product codes, postcodes and account numbers would otherwise silently lose their zeros. Untick the option and every value is written as a string, which suits schemas that validate types strictly.
The spreadsheet as a content source
Many teams keep a pricing table, a list of translations, a product catalogue or an event schedule in a workbook because that is what the people maintaining it know how to use. The developer at the other end wants JSON to feed a static site build, a mobile app bundle, an i18n library or a set of test fixtures. Converting in the browser removes the usual Python-script-on-someone's-laptop step, and because the output is deterministic the file can be committed and diffed like any other source. It is also a quick way to inspect a workbook you received without opening Excel.
Limits
- Only
.xlsxfiles: legacy binary.xlsand password-protected workbooks are not supported. - Five files per batch; each workbook produces one
.jsonfile. - Large workbooks are limited by your device's memory, because the file and its JSON are both held in RAM.
Private, offline, batch
The workbook is read and parsed by JavaScript on your device, so sales figures, HR lists and unreleased pricing never leave it. A progress bar tracks each file, the ZIP behind "Download all" is built locally, and the page keeps working offline after its first visit. When you need to go back the other way, JSON to Excel turns an array of objects into a workbook; if plain text suits the next step better, Excel to CSV writes a CSV per sheet with ISO dates.