如何在Python中将JSON转换为XLS

28

有人知道如何在Python中将JSON转换为XLS吗?

我知道可以使用Python中的xlwt包创建xls文件。

如果我想直接将JSON数据文件转换为XLS文件怎么办?

有没有一种方法可以实现这个目标?


您需要一种编程语言来将您的分层JSON结构映射到平面电子表格结构。您可能希望将其转换为CSV,而不是直接转换为XLS,因为网络上有大量的CSV示例(所有电子表格编辑器都可以读取CSV)。 - Jarosław Jaryszew
另一个答案在这里:https://dev59.com/FGYr5IYBdhLWcg3wvslA#56315305 pip install hfexcel - Emin Bugra Saral
5个回答

32

使用 pandas (0.15.1) 和 openpyxl (1.8.6):

import pandas
pandas.read_json("input.json").to_excel("output.xlsx")

4
此命令将特定{set}的所有键值对放置在同一行中。 - Dr. Essen

22

1
请注意,此链接是到 tablib 的非常旧版本(可能是当时最新版本),并且会导致与最新版本的 Python 出现问题。请安装 tablib 3.0.0 版本。 - Silidrone

6
如果您的json文件存储在某个目录中,则:
import pandas as pd
pd.read_json("/path/to/json/file").to_excel("output.xlsx")

如果你的json数据在代码中,那么你可以直接使用DataFrame。
json_file = {'name':["aparna", "pankaj", "sudhir", "Geeku"],'degree': ["MBA", "BCA", "M.Tech", "MBA"],'score':[90, 40, 80, 98]}
df = pd.DataFrame(json_file).to_excel("excel.xlsx")

我遇到了这个错误:“如果使用所有标量值,则必须传递索引”。 - Jinna Balu

2

如果有人想要使用Flask-REST将输出作为流输出到Excel

Pandas 版本:

json_payload = request.get_json()

with NamedTemporaryFile(suffix='.xlsx') as tmp:

    pandas.DataFrame(json_payload).to_excel(tmp.name)

    buf = BytesIO(tmp.read())

    response = app.make_response(buf.getvalue())
    response.headers['content-type'] = 'application/octet-stream'

    return response

以及 OpenPyXL 版本:

keys = []
wb = Workbook()
ws = wb.active

json_data = request.get_json()

with NamedTemporaryFile() as tmp:

    for i in range(len(json_data)):
        sub_obj = json_data[i]
        if i == 0:
            keys = list(sub_obj.keys())
            for k in range(len(keys)):
                ws.cell(row=(i + 1), column=(k + 1), value=keys[k]);
        for j in range(len(keys)):
            ws.cell(row=(i + 2), column=(j + 1), value=sub_obj[keys[j]]);
    wb.save(tmp.name)

    buf = BytesIO(tmp.read())

    response = app.make_response(buf.getvalue())
    response.headers['content-type'] = 'application/octet-stream'

    return response

0
如果你想将任何 JSON(.json)文件转换为 Microsoft Excel,你可以尝试以下代码片段。并且你遇到了一个值错误:trailing data
示例:你的文件名是input.json
import pandas as pd
pd.read_json(“input.json”, lines = True).to_excel(“output.xlsx”)

output.xlsx将是您所需的文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接