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

openpyxl循环创建多Excel表格报错表名已存在,求排查原因

问题原因与解决方案

你的代码使用了嵌套循环,外层遍历两个工作表,内层遍历两个表名,这会导致:

  1. 先给Total - Chickens工作表添加TotalChickensTable和TotalCOWSTable两个表
  2. 接着尝试给Total - COWS工作表添加TotalChickensTable时,由于Excel工作簿内的表名是全局唯一的(与所在工作表无关),此时TotalChickensTable已经存在,直接触发报错,循环根本没机会执行到给第二个工作表添加TotalCOWSTable的步骤。

解决方案

让每个工作表对应唯一的表名,用zip()把工作表列表和表名列表配对,替换嵌套循环为单层循环:

修改后的代码:

from openpyxl.utils import get_column_letter
from openpyxl.worksheet.table import Table, TableStyleInfo

chickensTotal = Report_workbook['Total  - Chickens']
cowsTotal = Report_workbook['Total  - COWS']
totalSheets = [chickensTotal, cowsTotal]
totalTableList = ['TotalChickensTable', 'TotalCOWSTable']

# 用zip配对工作表和对应的表名
for sheet, table_name in zip(totalSheets, totalTableList):
    table_ref = f"A7:{get_column_letter(sheet.max_column)}{sheet.max_row}"
    tableParameters = Table(displayName=table_name, ref=table_ref)

    style = TableStyleInfo(name="TableStyleMedium16", showFirstColumn=False,
                           showLastColumn=False, showRowStripes=True, showColumnStripes=False)
    tableParameters.tableStyleInfo = style
    sheet.add_table(tableParameters)

这样每个工作表只会添加对应的唯一表名,不会出现重复,就能正常创建两个目标表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:45:39