JSON to Excel converter that turns nested data into readable sheets
Someone sent you a JSON export and you need to sort, filter or share it with people who live in Excel. Your todo.is agent reads the JSON, puts the main records on one sheet and nested lists on linked sheets, converts timestamps to real dates and formats it so a non-developer can use it.
The prompt
- Turn the attached JSON into an Excel workbook: [ATTACH THE JSON]. Put the main records ([MAIN RECORDS]) on the first sheet, one row each, with nested objects flattened into columns. Put each nested list on its own sheet with an ID column that links back to the main record. Convert timestamps to Excel dates in [TIME ZONE] and amounts to numbers. Use readable column headers instead of raw keys. Add filters, freeze the header row and add a Summary sheet with [SUMMARY]. Send the .xlsx.
What to change
- [ATTACH THE JSON]: Attach a .json or .jsonl file, or paste a public API URL.
- [MAIN RECORDS]: E.g. "tickets", "customers", "transactions" or "the items under data.results".
- [TIME ZONE]: E.g. "Europe/Paris", "US Eastern" or "keep UTC".
- [SUMMARY]: E.g. "counts by status", "total amount per month" or "nothing".
Example result
- JSON to Excel: tickets_q3.json
- Records found under data.tickets · 2,300 tickets · 3 sheets
- Sheet 1: Tickets (2,300 rows)
- Columns: Ticket ID, Created, Status, Priority, Channel, Customer name, Customer email, Assignee, Tags, First reply (hours)
- • created_at 1756972800 (Unix seconds) became 04/09/2025 10:00 in Europe/Paris
- • requester.name and requester.email became Customer name and Customer email
- • tags ["billing","refund"] became "billing, refund"
- • first_reply_minutes became hours with one decimal
- Sheet 2: Comments (9,115 rows)
- Columns: Ticket ID, Comment #, Author, Public, Created, Text
- • Linked to Tickets by Ticket ID, so you can filter one ticket's thread
- • Long comments wrap in the cell; text over 32,767 characters (Excel's cell limit) was cut and marked "[truncated]" (1 comment)
- Sheet 3: Summary
- • Tickets by status: Solved 1,884 · Open 211 · Pending 160 · On hold 45
- • Tickets by priority: Urgent 98 · High 402 · Normal 1,612 · Low 188
- • Median first reply: 3.4 hours
- Formatting
- Header rows frozen and bold, filters on, column widths fitted, Status column color-coded
- Notes
- • 14 tickets had no assignee (blank cells)
- • Raw key names are listed in a hidden "Field map" sheet in case you need to trace a column back to the JSON
How to do it with todo.is
- Copy the prompt and say which records are the main rows and what summary you want.
- Attach the JSON in todo.is, or send your agent the API link if the data is public.
- Your agent maps the structure, splits nested lists onto linked sheets and formats the workbook.
- Download the .xlsx. Reply "add a chart of tickets per week" or similar to extend it.
Tips for a better result
- Tell your agent where the records sit (for example data.results). Big API responses often wrap them in metadata.
- Unix timestamps are in UTC. Give your time zone so dates match what your team sees in the app.
- One sheet per nested list keeps the main sheet readable. Avoid cramming lists into one cell if you need to filter by them.
- Getting the same export every week? Make it a recurring to-do with the API link and get a fresh workbook by email.
JSON to Excel converter: FAQ
- Can Excel open JSON directly? Excel can import JSON through Power Query, but nested data needs several manual steps. Your agent does the flattening and formatting for you and sends a ready .xlsx.
- How are nested arrays handled in Excel? Each nested list goes on its own sheet with an ID column that links each row back to its parent record.
- What if the JSON is too big for one sheet? Excel sheets stop at 1,048,576 rows. Your agent splits larger data across sheets or files and tells you.
- Will I get Google Sheets? You get an .xlsx that opens in Google Sheets. With Google connected, your agent can save it to your Drive.
JavaScript is required to use the todo.is app.