Skip to content
Back to Blog
By JSONConvert Team··7 min read

How to Convert JSON to Excel (Power Query, CSV, Python)

There are three ways that work. In Excel for Windows, use Data > Get Data > From File > From JSON and Power Query turns the file into a table. If you only need the data once, in any spreadsheet app, convert the JSON to CSV and open the CSV. If you do this every week, script it with Python and pandas. Google Sheets cannot import a .json file, so convert to CSV first.

Which method to use

SituationMethod
One file, Excel on WindowsPower Query: From JSON
One-off, any spreadsheet appConvert to CSV, then open it
The same export every weekPower Query with Refresh, or a pandas script
Google SheetsConvert to CSV, then File > Import
Many files, or part of a pipelinepandas

Method 1: Power Query, Excel's own JSON import

  1. In Excel, go to Data > Get Data > From File > From JSON.
  2. Pick the .json file and select Open.
  3. The Power Query editor opens. Microsoft's JSON connector docs say Power Query uses automatic table detection to flatten the JSON into a table.
  4. Check the columns, then select Close & Load. The data lands on a new sheet as an Excel table.
The query stays linked to the file. When the JSON changes, Data > Refresh All reloads it. That is the main reason to pick Power Query over a one-off conversion.

If the editor shows a column full of "Record" or "List" values instead of real data, the nesting was not fully flattened. Click the expand button (two arrows) in that column's header. A Record column expands into one column per field. A List column expands into new rows, one per item, and the parent row's values repeat on each.

Two things stop the import:

  • Invalid JSON. One trailing comma or single-quoted string and the connector fails. The JSON validator gives you the line and column of the problem.
  • JSON Lines. A .jsonl file has one JSON value per line, so it is not one JSON document, and the connector rejects it. Microsoft's docs give M code for it, or turn it into an array first with the steps in the JSON Lines guide.
If your Excel has no From JSON option, use method 2. It works in every version and every spreadsheet app.

Method 2: Convert to CSV, then open it

Paste the JSON into the JSON to CSV converter and download the .csv. Each object becomes a row and each key a column. Nested objects become dot-named columns. This input:

comes out as:

A list of plain values is joined with ; into one cell, so ["new", "vip"] becomes new;vip. A list of objects is written into the cell as JSON text. The conversion runs in your browser, so the file is not uploaded anywhere.

Double-clicking the CSV is fine for plain ASCII data. If names have accents or any non-English text, import it with Data > From Text/CSV and pick UTF-8 as the file origin instead, because Excel does not always guess the encoding of a CSV correctly. If everything lands in column A, Excel expected a different separator, which is common with regional settings that use ;. The same import dialog lets you set the delimiter to comma.

Method 3: Python and pandas

to_excel needs the openpyxl package, so install both: pip install pandas openpyxl. json_normalize flattens nested objects into dot-named columns, the same as the CSV route. On the sample above, pandas 3.1 gives:

Watch the tags column. pandas keeps lists as Python lists, and Excel receives the text ['new']. Join them before writing if you want plain text:

If the records sit under a key, such as {"data": {"orders": [...]}}, pass that list: pd.json_normalize(data["data"]["orders"]). If each record holds a list of child objects and you want one row per child, use record_path and meta:

Google Sheets

Google's help page lists the file types Sheets can import: .xls, .xlsx, .xlsm, .xlt, .xltx, .xltm, .ods, .csv, .txt, .tsv and .tab. JSON is not one of them. Convert the file with the JSON to CSV converter, then use File > Import > Upload in Sheets and choose whether to create a new spreadsheet, insert a new sheet or replace the current one.

What happens to nested data

A spreadsheet is a grid and JSON is a tree, so every method has to decide what to do with nesting:

JSONPower QueryCSV converter herepandas json_normalize
Nested objectExpand into columnsparent.child columnsparent.child columns
List of plain valuesExpand to new rowsJoined with ; in one cellKept as a list
List of objectsExpand to new rowsJSON text in one cellKept as a list, or record_path
If the data is deeply nested, decide the shape yourself before export instead of letting a tool guess. The flatten nested JSON guide covers the choices.

Excel limits worth knowing

From Microsoft's Excel specifications page:

  • A worksheet holds 1,048,576 rows by 16,384 columns. A larger export will not fit on one sheet.
  • A cell holds at most 32,767 characters, which matters if you put JSON text in cells.
  • Number precision is 15 digits. A 64-bit ID such as 9007199254740993 changes when Excel reads it as a number. Keep IDs as text. The large numbers guide explains why JSON IDs break in other tools too.

FAQ

Can Excel open a JSON file?

Yes, through Power Query: Data > Get Data > From File > From JSON. That is Excel's supported route for JSON, and the query can be refreshed when the file changes.

How do I convert JSON to Excel for free?

All three methods are free. Power Query is part of Excel, the JSON to CSV converter here is free and runs in your browser, and pandas is open source.

How do I convert Excel back to JSON?

Save the sheet with File > Save As and pick CSV UTF-8, then paste the file into the CSV to JSON converter.

What is a JSON file in the first place?

A plain text file of structured data. If you were sent one and just want to read it, the guide What Is a JSON File and How Do You Open It? covers that.

Related Tools