【openpyxl】 工作表操作指南:新建、复制、删除工作表 📅 2026/7/22 1:56:20 1. 引言openpyxl 是 Python 中用于读写 Excel 文件.xlsx/.xlsm的强大库。在实际数据处理中我们经常需要对工作簿中的工作表进行管理包括新建、复制和删除等操作。本文将详细介绍如何使用 openpyxl 完成这些常见任务。2. 准备工作首先确保已安装 openpyxlpip install openpyxl导入必要的模块from openpyxl import Workbook, load_workbook3. 新建工作表3.1 创建新工作簿时自动生成的工作表使用Workbook()创建新工作簿时默认会包含一个名为 Sheet 的工作表# 创建新工作簿 wb Workbook() 获取默认工作表第一个工作表 ws wb.active print(ws.title) # 输出Sheet3.2 添加新的工作表使用create_sheet()方法添加新工作表# 在末尾添加新工作表 ws1 wb.create_sheet(月度数据) # 默认添加到末尾 在指定位置添加新工作表 ws2 wb.create_sheet(季度汇总, 0) # 插入到第一个位置索引0 查看所有工作表名称 print(wb.sheetnames) # 输出[季度汇总, Sheet, 月度数据]4. 复制工作表4.1 在同一工作簿内复制使用copy_worksheet()方法复制工作表# 复制工作表 source_ws wb[月度数据] # 获取源工作表 copied_ws wb.copy_worksheet(source_ws) 复制后的工作表名称会自动添加 (1) 后缀 print(copied_ws.title) # 输出月度数据 (1) 可以重命名复制的工作表 copied_ws.title 月度数据_备份4.2 复制时的注意事项复制操作会复制单元格内容、格式、公式等图表、图片等对象可能无法完全复制工作表间公式引用可能需要手动调整5. 删除工作表5.1 删除指定工作表使用remove()方法删除工作表# 删除工作表 ws_to_delete wb[月度数据_备份] wb.remove(ws_to_delete) 或者通过工作表名称删除 del wb[季度汇总] 验证删除结果 print(wb.sheetnames) # 输出[Sheet, 月度数据]5.2 删除时的注意事项不能删除所有工作表工作簿必须至少保留一个工作表删除操作不可撤销建议先备份重要数据删除后工作表索引会自动调整6. 综合示例下面是一个完整的示例演示如何创建、复制和删除工作表from openpyxl import Workbook 1. 创建新工作簿 wb Workbook() print(初始工作表:, wb.sheetnames) # [Sheet] 2. 添加新工作表 sales_ws wb.create_sheet(销售数据) expense_ws wb.create_sheet(支出数据, 0) # 插入到开头 print(添加后:, wb.sheetnames) # [支出数据, Sheet, 销售数据] 3. 复制工作表 backup_ws wb.copy_worksheet(sales_ws) backup_ws.title 销售数据_备份 print(复制后:, wb.sheetnames) # [支出数据, Sheet, 销售数据, 销售数据_备份] 4. 删除工作表 del wb[支出数据] print(删除后:, wb.sheetnames) # [Sheet, 销售数据, 销售数据_备份] 5. 保存工作簿 wb.save(example.xlsx)7. 常见问题与解决方案7.1 工作表名称重复openpyxl 不允许同名工作表添加或重命名时需确保名称唯一# 检查工作表名称是否已存在 def add_sheet_safely(wb, sheet_name): if sheet_name in wb.sheetnames: # 添加后缀确保唯一性 i 1 while f{sheet_name}_{i} in wb.sheetnames: i 1 sheet_name f{sheet_name}_{i} return wb.create_sheet(sheet_name)/code/pre 7.2 批量操作工作表 批量创建多个工作表 # 批量创建季度工作表 quarters [Q1, Q2, Q3, Q4] for quarter in quarters: wb.create_sheet(f销售_{quarter}) 7.3 保存和加载工作簿 操作完成后记得保存 # 保存到文件 wb.save(data.xlsx) 加载已存在的工作簿 wb2 load_workbook(data.xlsx) print(加载的工作表:, wb2.sheetnames) 8. 总结 openpyxl 提供了简洁的 API 来管理工作表 新建工作表使用 create_sheet() 方法 复制工作表使用 copy_worksheet() 方法 删除工作表使用 remove() 方法或 del 语句 掌握这些基本操作后你可以更灵活地处理 Excel 文件满足各种数据处理需求。建议在实际使用中结合异常处理确保程序的健壮性。