有人知道如何在Python中将JSON转换为XLS吗?
我知道可以使用Python中的xlwt
包创建xls
文件。
如果我想直接将JSON
数据文件转换为XLS
文件怎么办?
有没有一种方法可以实现这个目标?
使用 pandas (0.15.1) 和 openpyxl (1.8.6):
import pandas
pandas.read_json("input.json").to_excel("output.xlsx")
import pandas as pd
pd.read_json("/path/to/json/file").to_excel("output.xlsx")
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")
如果有人想要使用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
trailing data
。input.json
。import pandas as pd
pd.read_json(“input.json”, lines = True).to_excel(“output.xlsx”)
output.xlsx
将是您所需的文件
pip install hfexcel
- Emin Bugra Saral