Excel to CSV vs Excel to JSON: Which Export Should You Use?
The short answer first: importing into another spreadsheet, a database table, or a BI tool wants CSV. Sending the data to an API, a developer, or an app that expects structured data wants JSON. Everything else below is the reasoning behind that rule and the specific cases where it flips.
What actually changes between the two
CSV is flat rows and columns, and everything in it is text, even a number or a date is just a string of characters until whatever reads it decides to parse it back. JSON can nest data and preserve real types, a number stays a number, a boolean stays a boolean, and a list stays a list rather than getting flattened into extra rows or comma-joined into one cell.
Where CSV breaks down
A single flat table works fine for CSV. Multiple sheets in one workbook, merged cells, or genuinely hierarchical data, an order with a list of line items, for example, don't fit a flat CSV without duplicating the parent row once per child item, which is exactly the kind of repeated-row structure a relational export produces and a JSON array of line items avoids entirely.
Where JSON is overkill
If the destination is Excel, Google Sheets, or a plain database import tool, JSON just adds a parsing step nobody asked for. Those tools read rows and columns natively; handing them nested JSON means writing code to flatten it back into a table before it's usable, which is the CSV shape you started with, produced the hard way.
The gotchas that actually bite
A few specific things trip people up regardless of which direction they're exporting:
- .xlsm converts the same as .xlsx. The macro-enabled format stores the same worksheet data underneath; the macros themselves aren't exported, since neither CSV nor JSON has anywhere to put executable code.
- A multi-sheet workbook doesn't collapse into one output. CSV holds exactly one table, so Kit-Bin's Excel to CSV tool lets you pick one sheet, or export every sheet at once as a ZIP of individual CSVs. Excel to JSON converts one sheet per run, since a single JSON array maps to a single table; pick a different sheet from the dropdown to convert another.
- Dates can come out ambiguous, not wrong. Both tools write a date the way the sheet displayed it, so it won't turn into Excel's internal serial number, but a cell shown as 03/04/2025 stays exactly that ambiguous text, and whatever imports it next may read it as 3 April or 4 March. Reformat the column to an unambiguous format like YYYY-MM-DD in Excel first if the exact date matters.
- Formulas convert to their last calculated value, not the formula itself. Neither CSV nor JSON has a concept of a live formula, so what gets exported is whatever the cell displayed the moment the file was opened, not
=SUM(A1:A10).
Doing the export
Excel to CSV converts one sheet, or every sheet at once as a ZIP of individual CSVs. Excel to JSON converts one selected sheet into an array of objects, one per row, with column headers as the keys, keeping numbers and booleans as real JSON types instead of text. Both run entirely in your browser.
Need to go from CSV to JSON afterward instead, or the reverse? See CSV vs JSON: which one do you need for the same decision without the Excel step in front of it.