
JSON (JaveScript Object Notation) is a popular and easy format to store, share and distribute data. It is often used by websites, APIs and streaming (real-time) systems. But it is also cumbersome and hard to use for performing typical data tasks like summarizing, pivoting, filtering or visualizing. That is why you may want to convert JSON to Excel format. In this article let me explain the process.
1. Why Convert JSON to Excel?
Excel is a more familiar and easy to work with format for your data. Also, when setup properly Excel files (such as CSV or XLSX or XLSB) take up less space than their JSON counter parts. More importantly, performing data tasks like calculating formulas, creating pivots or making charts would be easier with Excel format as against JSON.
Overview of This Guide
In this guide, we’ll walk through multiple methods to convert JSON to Excel, including manual methods using Excel’s built-in tools, automated methods using Python, and third-party online tools. Whether you’re working with small or large datasets, there’s a solution for you. Let’s dive in and explore how you can make this transformation efficiently.
2. Understanding JSON Format
Before jumping into the process of converting JSON to Excel, it’s important to understand JSON format. JSON is a lightweight data format that’s easy for both us and computers to read and write. It’s primarily used to transmit data between a server and a web application, often in APIs or data feeds.
What Does JSON Look Like?
At its core, JSON is a collection of key-value pairs that are organized in objects and arrays. JSON data can be quite flexible, allowing it to represent both simple and complex data structures. It supports various types of data, including strings, numbers, booleans, arrays, and objects.
Let’s consider the following example of JSON data representing information about a few employees in a company:
{
"employees": [
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "johndoe@awesomechoc.com",
"position": "Chocolatier",
"hire_date": "2023-06-15",
"skills": ["Baking", "Cocoa Sculpting", "Confectionary"]
},
{
"id": 2,
"first_name": "Jane",
"last_name": "Smith",
"email": "janesmith@awesomechoc.com",
"position": "Marketer",
"hire_date": "2024-02-20",
"skills": ["Packaging", "Product Design", "Field Sales"]
},
{
"id": 3,
"first_name": "Emily",
"last_name": "Johnson",
"email": "emilyj@awesomechoc.com",
"position": "Accountant",
"hire_date": "2024-08-30",
"skills": ["XERO", "Excel", "AR / AP consolidation"]
}
]
}
Breaking Down the JSON Example
- Objects and Arrays:
- The main JSON data structure in the example above is an object, denoted by curly braces
{}. - Inside this object, there is a key called
"employees", which maps to an array (denoted by square brackets[]). - The array (list) contains multiple objects, each representing a single employee.
- The main JSON data structure in the example above is an object, denoted by curly braces
- Key-Value Pairs:
- Inside each employee object, you’ll find several key-value pairs. For example,
"id": 1tells you the employee’s ID, and"first_name": "John"specifies the first name of the employee. - Some of the values in the JSON are simple data types (like strings or numbers), while others, such as the
skillskey, are arrays that hold multiple values.
- Inside each employee object, you’ll find several key-value pairs. For example,
- Nested Data:
- The
skillsfield is an example of nested data. It’s an array within the employee object, which further contains multiple string values representing different skills. This kind of nested data can be difficult to work with directly in Excel, which is why conversion and flattening are necessary.
- The
Challenges of Working with JSON in Excel

As you can see, JSON is hierarchical while Excel prefers data in a flattened, tabular format.
If you try to import JSON directly into Excel without transforming it, you might end up with a jumbled mess of data.
For example, in the above JSON, the "skills" field would result in a list being placed into a single cell if not properly flattened. Additionally, nested objects, like the employee object, would need to be expanded into separate columns (e.g., "id", "first_name", "last_name") for the data to be usable.
This is why it’s essential to convert JSON to Excel in a way that ensures all data is properly structured in rows and columns for analysis. Let’s explore some methods to accomplish that.
3. Methods for converting JSON to Excel format
There are many ways to convert JSON to Excel. My preferred technique is to use Power Query in Excel to convert the data quickly and elegantly. But you can also use other techniques. Let’s go thru each of these in detail.
JSON to Excel conversion (step by step):
What you need: You need a JSON file with your data. Download this sample data if you don’t have any.
- Go to Data > Get Data > From File > From JSON
- Select the JSON file on your computer (or on the network location)
- This will open Power Query editor with your JSON file. Here is a snapshot of how that would look like:

- Using the “convert” ribbon, convert the JSON listing to a “table”.
- Now you will have a “list” of all the JSON records (or objects). Click on the Expand button on the list column and select “expand to new rows”.
- This should show all the records of the JSON (see below)

- Expand the Value column again to see the contents of the records.
- If you have any “nested” or “hierarchical” data in your JSON, you must expand these columns again. But this time, use the “extract values…” option so you can see them all comma separated in the same column.
- Once you have all the necessary data in Power Query, remove any columns you no longer need by right clicking on them and selecting “remove” option.
- When ready, use the Home ribbon > Close & Load to bring the data to Excel.

Quick Demo of JSON to Excel conversion:
Here is a quick video demo of the process in Power Query.
Things to keep in mind when converting JSON to Excel with Power Query ??:
- Nested Data: If your JSON has nested data elements (for ex: skills attribute in our example above), you need to recursively expand all these items. But don’t expand them to “new rows” as this will create duplicate data. Instead just use “extract” option and get them all in one column with a delimiter like comma or semi-colon.
- Data type conversion: By default Power Query may convert your data to relevant data types. But always double check this and apply any conversion necessary.
- Preview vs. Load: Power Query Editor shows a preview of the JSON file for first 1000 rows, but actual conversion will only happen when you click on “close and load” button in Excel. So don’t freak out if you don’t see all the data in PQE (PQ Editor). It should appear when you load data to Excel.
- 1 Million Row Limitation: Excel spreadsheets can only hold 1,048,576 rows (just over 1 million). So if your JSON is really big, you need to think of another method. Here is an example of how to use Excel if you have more than 1 million rows of data.
Pros & Cons of using Excel to convert JSON:
Pros:
- Quick and easy: Power Query in Excel offers a quick, easy and straightforward way to convert JSON to Excel.
- FREE: Excel based conversion is free unlike paid methods.
- Refreshable: Should your JSON files change or update, you can quickly refresh the Power Query connection to see updated data in Excel. This means any reports or calculations you build on top of the JSON will automatically update, thus providing up to date information.
Cons:
- Hard to work with deeply nested data: If your JSON has multiple levels of nesting or hierarchies, then the Power Query based approach requires “drilling” to all these levels. As data can change often, if a new level of nesting appears in future, your Power Query refresh can fail.
- Requires understanding of Power Query: While PQ is not deeply technical, it is not easy either. So if you are not familiar with PQ, you will find this method hard to use. Here is an excellent beginner tutorial on Power Query with 4 powerful examples.
JSON to Excel conversion with Python (step by step):
Why Use Python for JSON to Excel Conversion?
While Excel’s Power Query can handle basic JSON imports, Python is often the better choice when dealing with large datasets, deeply nested JSON structures, or automating repetitive tasks. Using Python, we can efficiently read, manipulate, and export JSON data to an Excel file in just a few lines of code.
Installing Necessary Python Libraries
To begin, install the required libraries:
pip install pandas openpyxlThese libraries will help us process the JSON data and save it in an Excel-friendly format.
Loading JSON Data in Python
Consider the following employee data stored in JSON format (sample file).
{
"employees": [
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "johndoe@awesomechoc.com",
"position": "Chocolatier",
"hire_date": "2023-06-15",
"skills": ["Baking", "Cocoa Sculpting", "Confectionary"]
},
{
"id": 2,
"first_name": "Jane",
"last_name": "Smith",
"email": "janesmith@awesomechoc.com",
"position": "Marketer",
"hire_date": "2024-02-20",
"skills": ["Packaging", "Product Design", "Field Sales"]
}
]
}We can load this JSON file into Python using:
import json
import pandas as pd
# Load JSON data from a file
with open("employees.json", "r") as file:
data = json.load(file)Converting JSON to a Pandas DataFrame
Since the JSON structure contains a list under the "employees" key, we extract and convert it to a DataFrame:
df = pd.DataFrame(data["employees"])This will transform the data into a tabular format, making it easier to analyze and manipulate.
Exporting Data to an Excel File
To save the structured data as an Excel file:
df.to_excel("employees.xlsx", index=False, engine='openpyxl')This creates an Excel file employees.xlsx, which can be opened in Excel for further processing.
Handling Nested JSON Data
If the skills field is stored as a list, Excel might not display it properly. We can flatten this field:
df["skills"] = df["skills"].apply(lambda x: ", ".join(x) if isinstance(x, list) else x)Now, each employee’s skills will be stored as a comma-separated string, making it easier to read.
Automating JSON to Excel Conversion
For repeated tasks, we can automate the conversion by scheduling this Python script to run daily or whenever a new JSON file is added.
Python provides a scalable and efficient way to process JSON data and export it to Excel, making it ideal for large datasets and automation needs.
Converting JSON to Excel with External Tools
If you don’t want to get your hands dirty with Power Query or Python based approaches, you can also use online tools to quickly convert JSON to Excel format.
1. Online JSON to Excel Converters
These web-based tools allow users to upload a JSON file and instantly download an Excel file:
- JSON to Excel by TableConvert
- Converts JSON to structured Excel tables.
- Allows previewing and editing before download.
- Supports additional formats like CSV and Markdown.
- JSONFormatter.org JSON to Excel
- Free tool with a simple drag-and-drop interface.
- Supports large JSON files.
- JSON to CSV
- Upload your JSON file and download the CSV
These tools are great for quick, one-time conversions, but they may have file size limitations and require manual steps each time.
2. Using Power BI to convert JSON to Excel
If you prefer to use a desktop software to convert JSON to Excel formats (like CSV or tables), you can use Power BI Desktop too. This doesn’t have 1 million row limitation so you ca use it to parse very large JSON files. The approach is same Excel Power Query technique, but the final data ends up in Power BI. You can either copy the table at the end of load process or use it directly inside Power BI to analyze the data.
Final Thoughts
If your JSON files are simple enough, just use Power Query in Excel to get the output the way you want. You can refresh this anytime your data changes.
On the other hand if your files are large or you need more control, use Python code samples above and tweak them to your needs.
If you have any questions, leave a comment so I can help you.














23 Responses to “Displaying Text Values in Pivot Tables without VBA”
Its possible to display up to 4 text values.
Have a look at the screen shot of an example that I had posted way back at the EHA and figure out how its done !
http://tinypic.com/r/muzywk/6
With Excel 2010 you can use Conditional Formatting to apply custom number formats which can display text. (In older versions you can only modify text color and cell background color, but not number formats.) Using CF allows for an even larger number of different display values.
[...] Display text values in Pivot Tables without VBA [...]
Hey,
Thanks, this helps. But how do you do it for multiple values where there is a huge amount of non repeating text?
@Soumya
The only way to do more than 4 values is to make the Pivot Table manually with formulas, of course then it isn't a Pivot table
You can of course do it with VBA
You may want to have a look at this description of how to do it here: http://www.clearlyandsimply.com/clearly_and_simply/2011/06/emulate-excel-pivot-tables-with-texts-in-the-value-area-using-vba.html
@Soumya
The only way to do more than 4 values is to make the Pivot Table manually with formulas, of course then it isn’t a Pivot table
You can of course do it with VBA
You may want to have a look at this description of how to do it here: http://www.clearlyandsimply.com/clearly_and_simply/2011/06/emulate-excel-pivot-tables-with-texts-in-the-value-area-using-vba.html
[...] Pivot Tables take tables of data and allow the user to summarise and consolidate the data at the same time. This is a great and very fast method of analysis but is restricted to handling mathematical functions on the value field resulting in numerical summaries. – read more [...]
[…] Read more here: Displaying Text Values in Pivot Tables without VBA […]
There is a very good way actually for handling text inside values area.
First you create a special column on the very left side and call it ID, and put unique ID (numbers only), and then create a pivot table with:
Row Labels and Column labels as you like, and in the Values labels use the unique ID number.
Move the unique ID number (copy paste) somewhere to the right and use vlookup to load the data you need using the ID as reference.
It is a bit longer way but for me it works perfectly to combine values as you like in any moment.
hope helps.
Regards,
Jon
Thank you! I finally understand pivot tables thanks to your clear, concise explanations and examples.
Good Day. This is exactly what i have been looking for. However when i try it on my pivot table or even when i try to recreate this exercise using the sample worksheet, i get this error:
"Microsoft Excel cannot use the number format you typed. Try using one of the built-in number formats."
Same thing here, Excel quite did not like the format in my PowerPivot. Any clues as to what may be going on? Thanks.
I have the same thing happening on my end. I'm running a normal pivot table on a .xlsm file.
@Danzi
What format did you use?
can you post the file ?
pls. help in table there is name, pan. amount. i have to make pivot table for example
NAME PAN AMOUNT
MR.X AAAAC1254T 500.00
MR.Y AAABR1258C
MR.A CFVDE2458T
MR.Z AAVCR12548C
MR.X AAAAC1254T
MR.Z AADCD245T
pls. help in table there is name, pan. amount. i have to make pivot table for example
NAME PAN AMOUNT
MR.X AAAAC1254T 500.00
MR.Y AAABR1258C 1000
MR.A CFVDE2458T 2000
MR.Z AAVCR12548C 5451
MR.X AAAAC1254T 45564
MR.Z AADCD245T 4500
how to get pivot tabe so i get PAN no. against Name.
I found an easy way to get text values in pivot table.
I create an other worksheet in wich each cell has a formula that copy the pivot table. The trick is that the formula does a lookup for the numbers in the pivot table.
The formula looks like that:
=IF(ISNUMBER(table!A1);VLOOKUP(table!A1;Code!$A$1:$B$65;2);IF(ISBLANK(table!A1);" ";table!A1))
Code is a worksheet where there is a liste of text /numbers correspondance.
As a bonus The new sheet is easier to format
Additional trick:
In my case, i encoded differents codeid with a power(2, codeId-1) so that summing then is equivalent to concatenate them.
1-A
2-B
4-C
8-D
yields :
5 - AC
14 - BCD
Hi
I want to ask if pivot can display dates in pivot field. As in a column i have customers and in row different items i want to know there last purchase date. anyone help in this??
Hello Guys, Need your help
I am doing some analysis of the cycle time of the product i.e how much time a product takes from manufacturing to the central warehouse.
I have batch numbers for the product and against them i have to pull out the diff. dates
Like the base date is from where the manufacturing start. So i have the batch number,against it's manuf. date. Now i have to pull out the date when it was quality released.
I have the quality released data but the data have duplicates, like i will have two dates or may be three for the same batch. So my main objective is to pull out the date which is latest among them.
BATCH NO. DATE of Mfg. DATE of Quality release
A1 12/4/2014 (HERE I HAVE TO PULL value)
Next Sheet
BATCH NO. DATE of Quality Release
A1 14/5/2014
a2 23/5/2016
A1 12/5/2014
A1 13/6/2014
From this sheet i have to pull up the latest date format of date here is dd/mm/yyy
TIA
[…] needed to present text instead of counts in a pivot table value column. Here is an excellent resource for Excel manipulation, in addition to an overview of pivot […]
This is great thank you.
Wow!!! Excellent!! It helped me a lot.
I am developing training tracking sheet for 200 employees with training completed date. Each employee will be attending 25 courses. How to indicate actual dates in pivot table value field.