如何使用Openpyxl将JSON数据按指定结构写入Excel文件
问题原因
原有代码仅遍历JSON数组中的每个完整对象,未对单个对象内部的属性值做二次遍历,因此会把整个字典对象直接写入单个单元格。此外需要固定JSON属性的读取顺序,避免不同对象的属性顺序错位导致列内容匹配错误。
修正后的代码
# 提前固定属性读取顺序,和你要写入的Excel列顺序一一对应 key_order = ["id", "url", "titolo", "prezzo", "citta", "zona", "via", "tipologia", "superficie", "posti_auto", "piano", "piani_edificio", "balcone", "cantina", "terrazza", "giardino_privato", "taverna", "esposizione_esterna"] riga_dump = 3 # 起始行号,和你原有设置保持一致 # 第一层循环:每个JSON对象对应一行 for item in self.json: colonna_dump = 2 # 每一行都从第2列开始写入,和你原有设置保持一致 # 第二层循环:每个属性对应一列,按固定顺序读取属性值 for key in key_order: cell = scheda_1.cell(row=riga_dump, column=colonna_dump) cell.alignment = Alignment(horizontal='center') cell.font = Font(color='00000000') cell.value = item.get(key, "") # 属性缺失时自动填空值,避免报错 colonna_dump += 1 # 写完一整行后行号+1,切换到下一行 riga_dump += 1
逻辑说明
- 提前定义的
key_order顺序需要和你Excel表头的列顺序完全匹配,兼容低版本Python字典不保证插入顺序的问题,避免列内容错位 - 两层循环分别对应行遍历和列遍历,完全匹配你要求的「一个JSON对象对应一行、一个属性对应一列」的写入规则
- 用
get方法读取属性值,兼容部分对象属性缺失的场景,避免抛出KeyError异常
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

