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

使用xlwings创建Excel工作表出现顺序颠倒问题求助

xlwings创建Excel工作表顺序颠倒问题

用xlwings编写Python代码生成Excel工作表时,出现了工作表顺序和JSON数据顺序颠倒的问题——循环逻辑、原始JSON数据顺序都没问题,试了reverse方法也没用。相关代码片段如下:

# 遍历工作簿的每个工作表数据
for sheet_data in data['sheets']:
    sheet_id = sheet_data['id']
    sheet_data = sheet_data['data']

    # 创建新工作表
    sheet = wb.sheets.add(sheet_id)

    # 遍历工作表的每一行数据
    for i, row_data in enumerate(sheet_data):
        # 遍历行内每个单元格,写入值或公式到对应Excel单元格
        for j, cell_data in enumerate(row_data):
            cell = sheet.cells(i+1, j+1)

问题原因

xlwings的wb.sheets.add()方法默认会把新工作表插入到当前活动工作表的前面,而非工作簿末尾。循环创建时,每次新表都会插在已创建表的前面,最终顺序就和循环遍历的顺序相反了。

解决方法

直接在创建工作表时指定插入位置为工作簿最后一个工作表之后:

修改wb.sheets.add()的调用,添加after=wb.sheets[-1]参数:

# 遍历工作簿的每个工作表数据
for sheet_data in data['sheets']:
    sheet_id = sheet_data['id']
    sheet_data = sheet_data['data']

    # 在工作簿末尾创建新工作表
    sheet = wb.sheets.add(sheet_id, after=wb.sheets[-1])

    # 遍历工作表的每一行数据
    for i, row_data in enumerate(sheet_data):
        # 遍历行内每个单元格,写入值或公式到对应Excel单元格
        for j, cell_data in enumerate(row_data):
            cell = sheet.cells(i+1, j+1)
            cell.value = cell_data  # 补充写入逻辑

这样每次新工作表都会被添加到现有所有工作表的最后,最终顺序就和你遍历JSON数据的顺序一致了。

内容的提问来源于stack exchange,提问作者sabandairdze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:25:01