Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python将JSON转换为Excel_Python_Json_Python 3.x_Excel - Fatal编程技术网

用Python将JSON转换为Excel

用Python将JSON转换为Excel,python,json,python-3.x,excel,Python,Json,Python 3.x,Excel,我有一个JSON需要转换成Excel。 我正在使用Python3.8和xlsxwriter库。 下面是示例JSON { "companyId": "123456", "companyName": "Test", "companyStatus": "ACTIVE", "document": { "emp

我有一个JSON需要转换成Excel。 我正在使用Python3.8和xlsxwriter库。 下面是示例JSON

{
    "companyId": "123456",
    "companyName": "Test",
    "companyStatus": "ACTIVE",
    "document": {
        "employee": {
            "employeeId": "EM1567",
            "employeeLastName": "Test Last",
            "employeeFirstName": "Test Fist"
        },
        "expenseEntry": [
            {
            "allocation": [
                {
                "allocationId": "03B249B3598",
                "journal": [
                    {
                        "journalAccountCode": "888",
                        "journalPayee": "EMPL",
                        "journalPayer": "COMP",
                        "taxGuid": [
                            "51645A638114E"
                        ]
                    },
                    {
                        "journalAccountCode": "999",
                        "journalPayee": "EMPL",
                        "journalPayer": "EMPL",
                        "taxGuid": [
                            "8114E51645A63"
                        ]
                    },
                ],
                "tax": [
                    {
                        "taxCode": "TAX123",
                        "taxSource": "SYST"
                    },
                    {
                        "taxCode": "TAX456",
                        "taxSource": "SYST"
                    }
                ]
                }
            ],
            "approvedAmount": 200.0,
            "entryDate": "2020-12-10",
            "entryId": "ENTRY9988"
            }
        ],
        "report": {
            "currencyCode": "USD",
            "reportCreationDate": "2020-12-10",
            "reportId": "ACA849BBB",
            "reportName": "Test Report",
            "totalApprovedAmount": 200.0
        }
    },
    "id": "c71b7d756f549"
}
我现在的代码是:

我试过用熊猫

import pandas as pd

df = pd.json_normalize(data, max_level=5)
df.to_excel('test.xlsx', index=False)
结果呢

我尝试使用json\u excel\u转换器

from json_excel_converter import Converter 
from json_excel_converter.xlsx import Writer

conv = Converter()
conv.convert(data, Writer(file='test.xlsx'))
结果呢

这是我的期望


有人能帮我处理这个案子吗?非常感谢。

在Excel网格中有空单元格并不是真正的“propper”,这就是为什么json\u Excel\u转换器有这样的功能。
因此,如果您想实现这一点,恐怕您必须自己开发。

在Excel网格中使用空单元格并不是真正的“propper”,这就是为什么json\u Excel\u转换器有这样的功能。
因此,如果您想实现这一点,恐怕您必须自己开发。

这是您需要的代码。我是用软件包做的。首先,我用一些单元格格式的东西制作了模板。之后,我根据您的JSON输入值

导入xlsxwriter
从itertools导入zip\u
数据=[
{
“公司ID”:“123456”,
“公司名称”:“测试”,
“公司状态”:“活动”,
“文件”:{
“雇员”:{
“雇员ID”:“EM1567”,
“employeeLastName”:“最后一次测试”,
“employeeFirstName”:“测试拳头”
},
“支出分录”:[
{
“分配”:[
{
“分配ID”:“03B249B3598”,
“日记账”:[
{
“日记账代码”:“888”,
“JournalPaye”:“雇员”,
“journalPayer”:“COMP”,
“taxGuid”:[
“51645A638114E”
]
},
{
“journalAccountCode”:“999”,
“JournalPaye”:“雇员”,
“journalPayer”:“雇员”,
“taxGuid”:[
“8114E51645A63”
]
},
],
“税”:[
{
“taxCode”:“TAX123”,
“税源”:“系统”
},
{
“taxCode”:“TAX456”,
“税源”:“系统”
}
]
}
],
“批准金额”:200.0,
“进入日期”:“2020-12-10”,
“entryId”:“ENTRY9988”
}
],
“报告”:{
“货币代码”:“美元”,
“报告创建日期”:“2020-12-10”,
“报告ID”:“ACA849BBB”,
“报告名称”:“测试报告”,
“总批准金额”:200.0
}
},
“id”:“c71b7d756f549”
}
]
xlsx\u file='您的\u文件名\u here.xlsx'
#定义excel文件
工作簿=xlsxwriter.workbook(xlsx_文件)
#为我们的工作创建图纸,默认为Sheet1。
工作表=工作簿。添加工作表()
#通用合并格式
合并\格式=工作簿。添加\格式({'align':'center','valign':'vcenter})
#将所有列宽设置为20
工作表.集合列('A:V',20)
#按列创建模板(A-V)
工作表。合并范围(0,0,4,0,'companyId',合并格式)#A
工作表.合并范围(0,1,4,1,'companyName',合并格式)#B
工作表.合并范围(0,2,4,2,'companyStatus',合并格式)#C
工作表.合并范围(0,3,0,20,“文档”,合并格式)#C-U
工作表.合并范围(1,3,1,5,“员工”,合并格式)#D-F
工作表.合并范围(2,3,4,3,'employeeId',合并格式)#D
工作表.合并范围(2,4,4,4,'employeeLastName',合并格式)#E
工作表.合并范围(2,5,4,5,'employeeFirstName',合并格式)#F
工作表.合并范围(1,6,1,15,'expenseEntry',合并格式)#G-P
工作表。合并范围(2、6、2、12,‘分配’,合并格式)#G-M
工作表.合并范围(3,6,4,6,'allocationId',合并格式)#G
工作表.合并范围(3,7,3,10,'日记',合并格式)#H-K
工作表。写(4,7,“日记账代码”)#H
工作表。写下(4,8,'JournalPaye')#I
工作表。写(4,9,'journalPayer')#J
工作表。写(4,10,'taxGuid')#K
工作表.合并范围(3,11,3,12,'税务',合并格式)#L-M
工作表。写下(4,11,'taxCode')#L
工作表。写(4,12,'税源')#M
工作表.合并范围(2,13,4,13,'批准金额',合并格式)\N
工作表.合并范围(2,14,4,14,'entryDate',合并格式)#O
工作表.合并范围(2,15,4,15,'entryId',合并格式)#P
工作表。合并范围(1、16、1、20,‘报告’,合并格式)#Q-U
工作表.合并范围(2,16,4,16,'currencyCode',合并格式)#Q
工作表.合并范围(2,17,4,17,'reportCreationDate',合并格式)\R
工作表.合并范围(2,18,4,18,'reportId',合并格式)
工作表.合并范围(2,19,4,19,'reportName',合并格式)#T
工作表.合并范围(2,20,4,20,'totalApprovedAmount',合并格式)\U
工作表.合并范围(0,21,4,21,'id',合并格式)#V
#插入数据
行=5
对于数据中的obj:
工作表.write(行,0,对象get('companyId'))
工作表.write(第1行,obj.get('companyName'))
工作表.write(第2行,obj.get('companyStatus'))
document=obj.get('document',{})
#员工详细信息
employee=document.get('employee',{})
工作表.write(第3行,employee.get('employeeId'))
工作表