You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 16中用XlsxWriter将指定列表数据按列写入Excel求助

使用XlsxWriter将嵌套列表数据写入Excel

以下是实现代码,能将你提供的my_list数据按合并单元格的表格形式写入Excel(对应field1跨多行匹配field2的条目):

import xlsxwriter

# 你的数据
my_list = [
    {'field1': 'xxxxx', 'field2': [
        {'A': 'xxxx_01', 'B': 100},
        {'A': 'xxxx_02', 'B': 200},
        {'A': 'xxxx_03', 'B': 300},
        {'A': 'xxxx_04', 'B': 400},
    ]},
    # 可添加更多同结构数据项
]

# 创建Excel文件和工作表
workbook = xlsxwriter.Workbook('output.xlsx')
worksheet = workbook.add_worksheet()

# 定义单元格格式
header_format = workbook.add_format({'bold': True, 'align': 'center', 'valign': 'vcenter', 'border': 1})
cell_format = workbook.add_format({'align': 'center', 'valign': 'vcenter', 'border': 1})
merge_format = workbook.add_format({'align': 'center', 'valign': 'vcenter', 'border': 1})

# 写入表头
headers = ['field1', 'A', 'B']
for col, header in enumerate(headers):
    worksheet.write(0, col, header, header_format)

# 初始化数据起始行(表头占第0行)
row = 1

# 遍历数据写入表格
for item in my_list:
    field1_val = item['field1']
    field2_items = item['field2']
    item_count = len(field2_items)
    
    # 合并field1对应的多行单元格
    worksheet.merge_range(row, 0, row + item_count - 1, 0, field1_val, merge_format)
    
    # 写入field2的A、B列数据
    for idx, sub_item in enumerate(field2_items):
        worksheet.write(row + idx, 1, sub_item['A'], cell_format)
        worksheet.write(row + idx, 2, sub_item['B'], cell_format)
    
    # 更新下一个数据块的起始行
    row += item_count

# 设置列宽优化显示(可选)
worksheet.set_column(0, 2, 15)

# 关闭文件完成写入
workbook.close()

关键说明:

  • 合并单元格逻辑:通过merge_range()方法实现field1跨多行合并,合并行数等于对应field2列表的条目数量
  • 格式统一:分别定义表头、普通单元格和合并单元格的格式,保证表格对齐且边框完整
  • 扩展性:支持my_list中添加多个数据项,每个项的field2长度不同时会自动适配合并行数

内容的提问来源于stack exchange,提问作者K.ju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:40:05