pin_drop当前位置:知识文库 ❯ 图文
Python openpyxl工作表操作教程 - 创建删除复制冻结
一、概述
工作表(Worksheet)是Excel工作簿中的单个表格页面。openpyxl提供了丰富的工作表操作功能,包括创建、删除、复制、重命名、设置标签颜色、冻结窗格、筛选等。合理管理工作表是组织Excel数据的基础。
二、语法
代码示例
wb.create_sheet(title, index)
wb.remove(sheet)
wb.copy_worksheet(sheet)
ws.title = '新名称'
ws.sheet_properties.tabColor = 'FF0000'
ws.freeze_panes = 'A2'三、参数说明
工作表常用属性与方法
工作簿操作方法
四、返回值
create_sheet()和copy_worksheet()返回Worksheet对象。
五、代码示例
示例1:创建与管理工作表
代码示例
from openpyxl import Workbook
wb = Workbook()
# 默认工作表
default_ws = wb.active
default_ws.title = '首页'
print(f"默认工作表: {wb.sheetnames}")
# 创建新工作表
ws1 = wb.create_sheet('销售数据')
ws2 = wb.create_sheet('库存数据', 1) # 插入到索引1
ws3 = wb.create_sheet('汇总')
print(f"创建后: {wb.sheetnames}")
# 按名称获取工作表
ws = wb['销售数据']
ws['A1'] = '这是销售数据表'
print(f"获取工作表: {ws.title}, A1={ws['A1'].value}")
# 删除工作表
wb.remove(ws3)
print(f"删除后: {wb.sheetnames}")
wb.save('sheet_ops.xlsx')
print("工作表操作文件已保存")输出:
代码示例
默认工作表: ['首页']
创建后: ['首页', '库存数据', '销售数据', '汇总']
获取工作表: 销售数据, A1=这是销售数据表
删除后: ['首页', '库存数据', '销售数据']
工作表操作文件已保存示例2:标签颜色与冻结窗格
代码示例
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = '数据表'
# 写入表头和数据
headers = ['编号', '姓名', '部门', '工资']
ws.append(headers)
for i in range(1, 21):
ws.append([i, f'员工{i}', f'部门{i%3+1}', 5000 + i*100])
# 设置标签颜色
ws.sheet_properties.tabColor = '2196F3' # 蓝色
# 冻结首行(表头固定)
ws.freeze_panes = 'A2'
# 设置自动筛选
ws.auto_filter.ref = f'A1:D{ws.max_row}'
print(f"标签颜色: {ws.sheet_properties.tabColor}")
print(f"冻结位置: {ws.freeze_panes}")
print(f"筛选范围: {ws.auto_filter.ref}")
print(f"数据范围: {ws.dimensions}")
wb.save('freeze_filter.xlsx')
print("冻结与筛选文件已保存")输出:
代码示例
标签颜色: 2196F3
冻结位置: A2
筛选范围: A1:D21
数据范围: A1:D21
冻结与筛选文件已保存示例3:复制工作表与遍历
代码示例
from openpyxl import Workbook
wb = Workbook()
# 创建源工作表
ws_source = wb.active
ws_source.title = '原始数据'
ws_source['A1'] = '项目'
ws_source['B1'] = '数值'
ws_source.append(['A', 100])
ws_source.append(['B', 200])
# 复制工作表
ws_copy = wb.copy_worksheet(ws_source)
ws_copy.title = '备份数据'
# 修改副本不影响原件
ws_copy['A2'] = 'A(修改)'
print(f"原件A2: {ws_source['A2'].value}")
print(f"副本A2: {ws_copy['A2'].value}")
# 遍历所有工作表
print(f"\n所有工作表:")
for name in wb.sheetnames:
sheet = wb[name]
print(f" {name}: {sheet.max_row}行 x {sheet.max_column}列")
wb.save('copy_sheet.xlsx')
print("复制工作表文件已保存")输出:
代码示例
原件A2: A
副本A2: A(修改)
所有工作表:
原始数据: 3行 x 2列
备份数据: 3行 x 2列
复制工作表文件已保存六、实际应用场景
-
月度报表:每月创建一个工作表,设置不同标签颜色区分
-
数据模板:冻结表头行,方便浏览大量数据
-
数据备份:复制工作表创建副本,保护原始数据
七、注意事项
注意:工作表名称不能超过31个字符,不能包含\ / ? * [ ]等特殊字符
注意:
copy_worksheet()只复制数据和样式,不复制图表和图片
注意:删除工作表时不能删除最后一个工作表,Excel至少需要一个工作表
八、工作表操作对比
九、小结
-
create_sheet()创建工作表,remove()删除,copy_worksheet()复制 -
tabColor设置标签颜色,freeze_panes设置冻结窗格
-
auto_filter.ref设置自动筛选范围
-
工作表名称有长度和字符限制,需注意校验
十、练习题
练习1
创建工作簿,添加4个工作表,分别设置红、绿、蓝、黄标签颜色
练习2
创建一个含20行数据的工作表,冻结首行,设置自动筛选
练习3
创建一个工作表并写入数据,复制该工作表,修改副本数据,验证原件不受影响
常见问题
工作表名称有哪些限制?
工作表名称不能超过31个字符,不能包含以下特殊字符:反斜杠(\)、正斜杠(/)、问号(?)、星号(*)、左中括号([)、右中括号(])。此外,名称不能为空,且同一工作簿中的工作表名称不能重复。
freeze_panes='B2'和freeze_panes='A2'有什么区别?
freeze_panes='A2'表示冻结第1行(A2上方的所有行),滚动时首行保持固定。freeze_panes='B2'表示冻结第1列和第1行(B2上方和左侧的单元格),滚动时第1列和首行都保持固定。freeze_panes='C3'则冻结前两列和前两行。
copy_worksheet()能跨工作簿复制工作表吗?
不能。copy_worksheet()只能在同一个工作簿内复制工作表。如果需要将工作表从一个工作簿复制到另一个工作簿,需要手动遍历源工作表的单元格数据,逐个复制到目标工作表中,或者使用其他方法如pandas进行数据迁移。
如何设置工作表的标签颜色?
使用ws.sheet_properties.tabColor = 'FF0000'设置标签颜色,颜色值为RGB十六进制格式(不带#号)。例如'FF0000'为红色,'00FF00'为绿色,'0000FF'为蓝色,'2196F3'为Material Design蓝色。
本文涉及AI创作
内容由AI创作,请仔细甄别