You need to enable JavaScript to run this app. 如何使用Python及openpyxl库写入带指定表名的Excel多工作表
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python及openpyxl库写入带指定表名的Excel多工作表

问题根因

原代码的核心错误是错误覆盖了工作表的引用变量:

  • 初始化openpyxl.Workbook()时,会自动生成一个名为'Sheet'的默认工作表,该表默认处于活跃状态
  • 完成ws1 = workbook.create_sheet('ONE')、ws2 = workbook.create_sheet('TWO')的创建操作后,两个变量本来分别对应'ONE'、'TWO'两个自定义工作表
  • 后续两行ws1 = workbook.active、ws2 = workbook.active,直接把ws1、ws2的引用全部替换为那个默认活跃的'Sheet'表。之前创建的'ONE'、'TWO'工作表因为失去了操作入口,没有写入任何内容,最终显示为空表
  • 后续所有针对ws1、ws2的单元格写入操作,全部作用在同一个默认活跃表上,这就是为什么最终生成的文件里只有一个存储了ws2全部内容的工作表
修正方案
  • 删除错误的两次workbook.active赋值语句,保留create_sheet返回的正确工作表引用
  • 可直接移除新建工作簿时自动生成的默认空表,避免产生冗余的Sheet页
修正后可正常运行的代码
import openpyxl

workbook = openpyxl.Workbook()
# 删除自动生成的默认空工作表
workbook.remove(workbook.active)

ws1 = workbook.create_sheet('ONE')
ws2 = workbook.create_sheet('TWO')

# 向ONE工作表写入测试内容
ws1['A1'] = 'ID'
ws1['B1'] = 'Text'
ws1['C1'] = 'Category'
ws1['A2'] = '234'
ws1['B2'] = 'Sample'
ws1['C2'] = 'ASD'

# 向TWO工作表写入测试内容
ws2['A1'] = 'ID'
ws2['B1'] = 'Text'
ws2['C1'] = 'Category'
ws2['A2'] = '566'
ws2['B2'] = 'Sample'
ws2['C2'] = 'PED'
ws2['A3'] = '896'
ws2['B3'] = 'SAmple'
ws2['C3'] = 'HEAD'

workbook.save('sam.xlsx')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 17:36:05