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
相关产品推荐
相关产品推荐

