pip install openpyxl
pip install pandas
import json
import pandas as pd
import os
from pathlib import Path
def json_to_excel(json_path, excel_path=None):
"""
将JSON文件转换为Excel文件
参数:
json_path: JSON文件的路径
excel_path: 输出Excel文件的路径,默认为与JSON文件同路径同名称,扩展名为.xlsx
"""
try:
# 检查JSON文件是否存在
if not os.path.exists(json_path):
raise FileNotFoundError(f"文件不存在: {json_path}")
# 如果未指定Excel路径,则使用与JSON相同的路径和名称
if excel_path is None:
json_dir = os.path.dirname(json_path)
json_filename = os.path.splitext(os.path.basename(json_path))[0]
excel_path = os.path.join(json_dir, f"{json_filename}.xlsx")
# 读取JSON文件
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# 将JSON数据转换为DataFrame
# 处理不同结构的JSON数据
if isinstance(data, list):
# 如果JSON是列表
df = pd.DataFrame(data)
elif isinstance(data, dict):
# 如果JSON是字典
# 尝试将字典转换为适合表格形式的数据
if all(isinstance(v, dict) for v in data.values()):
# 如果字典的值也是字典,使用pd.DataFrame.from_dict
df = pd.DataFrame.from_dict(data, orient='index')
else:
# 否则转换为单行列
df = pd.DataFrame(list(data.items()), columns=['Key', 'Value'])
else:
raise ValueError("不支持的JSON数据结构")
# 保存为Excel文件
df.to_excel(excel_path, index=False, engine='openpyxl')
print(f"转换成功!Excel文件已保存至: {excel_path}")
return True
except Exception as e:
print(f"转换失败: {str(e)}")
return False
if __name__ == "__main__":
# 指定JSON文件路径
json_file_path = r"D:\d4\a.json"
# 调用转换函数
json_to_excel(json_file_path)
a.json格式如下:
[
{
"id": 1,
"a": "1"
}
]
生成的excel如下: