JSON数据如何轻松转换为Excel表格:实用指南与代码示例
在数据处理和分析的场景中,JSON(JavaScript Object Notation)和Excel是两种最常用的数据格式,JSON以其轻量级、易读的结构化特性成为数据交换的主流格式,而Excel则凭借其强大的表格编辑、公式计算和可视化功能成为办公和数据分析的利器,将JSON数据转换为Excel表格,能让我们更直观地查看、编辑和进一步分析数据,本文将详细介绍几种主流的JSON转Excel方法,涵盖编程语言工具、在线转换器和办公软件操作,满足不同技术背景用户的需求。
为什么需要将JSON转换为Excel?
在开始转换前,先简单了解下两种格式的特点差异:
- JSON:纯文本格式,以键值对(
"key": "value")和嵌套结构(数组、对象)组织数据,适合机器解析和网络传输,但直接阅读复杂嵌套数据时不够直观。 - Excel:表格化格式,以行和列组织数据,支持公式、筛选、排序、图表等功能,适合人工编辑和数据分析。
将JSON转Excel的核心目的,就是将结构化的文本数据转化为易操作的表格数据,
- 将API返回的JSON响应数据整理成报表;
- 将爬虫抓取的JSON格式数据转换为可分析的表格;
- 将配置文件中的JSON数据导出为便于查阅的Excel文件。
方法一:使用Python编程(推荐,适合批量处理)
Python是数据处理领域的“瑞士军刀”,拥有丰富的库支持JSON和Excel操作,适合需要批量、自动化转换的场景,这里推荐使用 pandas + openpyxl(或 xlsxwriter)组合,步骤简单且功能强大。
准备工作:安装必要库
在命令行中运行以下命令安装依赖:
pip install pandas openpyxl # openpyxl用于写入.xlsx格式,xlsxwriter是替代方案
编写转换代码
假设我们有一个JSON文件 data.json如下(嵌套结构示例):
[
{
"id": 1,
"name": "张三",
"age": 25,
"courses": [
{"course_name": "数学", "score": 90},
{"course_name": "英语", "score": 85}
],
"info": {"city": "北京", "zip_code": "100000"}
},
{
"id": 2,
"name": "李四",
"age": 30,
"courses": [
{"course_name": "数学", "score": 88},
{"course_name": "物理", "score": 92}
],
"info": {"city": "上海", "zip_code": "200000"}
}
]
场景1:JSON是“数组对象”(最常见)
如果JSON数据是一个对象数组(如上述示例),可以直接用 pandas 的 read_json 方法加载,再保存为Excel:
import pandas as pd
# 读取JSON文件(假设文件编码为utf-8)
df = pd.read_json('data.json', encoding='utf-8')
# 保存为Excel文件,index=False表示不保存行索引
df.to_excel('output.xlsx', index=False, engine='openpyxl')
print("转换完成!文件已保存为 output.xlsx")
执行后,生成的Excel表格会自动展平嵌套结构(如 courses 和 info 会以字符串形式显示),若需更精细处理嵌套数据(如拆分 courses 为多行),可结合 json_normalize 函数(见下文)。
场景2:JSON是复杂嵌套结构(需展平)
如果JSON数据包含多层嵌套(如上述示例中的 courses 数组和 info 对象),直接转换会导致嵌套字段无法拆分,此时可用 pandas.json_normalize 进行“展平”,将嵌套结构拆分为多列或多行。
示例1:展平嵌套对象(如 info 字段)
import pandas as pd
from pandas import json_normalize
# 读取JSON数据
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 展平嵌套的info字段,其他字段保留
df = json_normalize(data, record_path=None, meta=['id', 'name', 'age'], record_prefix='info_')
# 或者更简单的:直接展平所有嵌套对象(需确认嵌套层级)
df = json_normalize(data)
df.to_excel('output_flattened.xlsx', index=False, engine='openpyxl')
print("嵌套数据展平完成!")
执行后,info 对象中的 city 和 zip_code 会被拆分为独立列(如 info.city、info.zip_code)。
示例2:展平嵌套数组(如 courses 字段,拆分为多行)
如果希望将 courses 数组中的每个元素拆分为独立行(即一个学生对应多行课程记录),可用 record_path 参数:
import pandas as pd
from pandas import json_normalize
# 读取JSON数据
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 将courses数组拆分为多行,同时保留学生基本信息
df = json_normalize(
data,
record_path='courses', # 指定要拆分的数组字段
meta=['id', 'name', 'age'] # 保留的元数据字段(学生信息)
)
df.to_excel('output_courses.xlsx', index=False, engine='openpyxl')
print("课程数据拆分完成!")
生成的Excel表格中,每个学生的每门课程会占一行,包含学生ID、姓名、年龄和课程信息。
进阶技巧:处理大型JSON文件
如果JSON文件较大(如超过100MB),直接用 pd.read_json 可能导致内存不足,可采用逐行读取或流式解析的方式,例如使用 ijson 库:
import ijson
import pandas as pd
# 流式读取JSON文件(假设是数组格式,逐个解析对象)
data = []
with open('large_data.json', 'rb') as f:
for item in ijson.items(f, 'item'): # 'item'是JSON数组的每个元素路径
data.append(item)
df = pd.DataFrame(data)
df.to_excel('large_output.xlsx', index=False, engine='openpyxl')
方法二:使用JavaScript(Node.js,适合前端或Web场景)
如果需要在浏览器环境或Node.js项目中转换JSON(例如将前端数据导出为Excel),可用 xlsx 库(SheetJS)。
安装xlsx库
npm install xlsx
编写转换代码
假设前端有一个JSON对象 jsonData,可直接转换为Excel并下载:
const XLSX = require('xlsx');
// 示例JSON数据(同Python示例)
const jsonData = [
{
id: 1,
name: "张三",
age: 25,
courses: [{ course_name: "数学", score: 90 }, { course_name: "英语", score: 85 }],
info: { city: "北京", zip_code: "100000" }
},
{
id: 2,
name: "李四",
age: 30,
courses: [{ course_name: "数学", score: 88 }, { course_name: "物理", score: 92 }],
info: { city: "上海", zip_code: "200000" }
}
];
// 将JSON转换为工作簿(worksheet)
const worksheet = XLSX.utils.json_to_sheet(jsonData);
// 创建工作簿并添加工作表
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// 导出为Excel文件(.xlsx格式)
XLSX.writeFile(workbook, 'output.xlsx');
console.log("Excel文件已生成!");
运行后,会在当前目录生成 output.xlsx,json_to_sheet 会自动处理基本嵌套(复杂嵌套需手动预处理)。
方法三:使用在线转换工具(适合无编程基础用户)
如果不想写代码,或偶尔需要转换少量JSON数据,在线工具是最便捷的选择,推荐以下工具:
Convertio(https://convertio.co/zh/json-excel/)
- 特点:支持多种格式互转,界面简洁,无需注册。
- 步骤:
- 打开网站,上传JSON文件(或粘贴JSON文本);
- 选择目标格式为 “Excel (.xlsx)”;
- 点击 “Convert” 转换,完成后下载文件。
Aconvert(https://www.aconvert.com/cn/json-to-excel/)
- 特点:免费、支持批量



还没有评论,来说两句吧...