1 创建与删除工作表
在 Excel 中,工作簿包含多个工作表。openpyxl
提供了简单的接口来创建和删除工作表。
创建新的工作表
openpyxl
允许在工作簿中添加新的工作表。可以通过 Workbook.create_sheet()
方法创建一个新的工作表。
import openpyxl# 创建一个新的工作簿
workbook = openpyxl.Workbook()# 创建一个新的工作表,默认插入到最后
new_sheet = workbook.create_sheet()# 创建一个名称为 'DataSheet' 的工作表,并插入到第一位置
data_sheet = workbook.create_sheet(title='DataSheet', index=0)# 输出所有工作表的名称
print("工作簿中的工作表名称:", workbook.sheetnames)# 保存工作簿
workbook.save('workbook_with_sheets.xlsx')
代码解释
create_sheet()
:在工作簿中创建一个新的工作表。如果不指定title
参数,默认名称为Sheet2
,Sheet3
等。title='DataSheet'
:指定新工作表的名称。index=0
:指定新工作表的位置,0
表示将其插入到工作簿的第一位置。
删除工作表
删除工作表使用 Workbook.remove()
方法。我们首先获取要删除的工作表,然后调用 remove()
方法。
import openpyxl# 打开现有工作簿
workbook = openpyxl.load_workbook('workbook_with_sheets.xlsx')# 获取要删除的工作表
sheet_to_delete = workbook['Sheet']# 删除工作表
workbook.remove(sheet_to_delete)# 输出剩余的工作表名称
print("删除后的工作表名称:", workbook.sheetnames)# 保存工作簿
workbook.save('workbook_after_deletion.xlsx')
代码解释
workbook['Sheet']
:通过名称获取要删除的工作表。workbook.remove(sheet_to_delete)
:删除指定的工作表。
注意:在删除工作表之前,请确保其内容不再需要,因为删除操作不可逆。
2 工作表的命名与重命名
获取工作表的名称
每个工作表都有一个唯一的名称,可以通过 Worksheet.title
属性访问或修改。
import openpyxl# 创建一个新的工作簿
workbook = openpyxl.Workbook()# 获取当前活动工作表
sheet = workbook.active# 输出默认的工作表名称
print("默认工作表名称:", sheet.title)
重命名工作表
可以通过设置 Worksheet.title
属性来重命名工作表。
import openpyxl# 创建一个新的工作簿
workbook = openpyxl.Workbook()# 获取当前活动工作表
sheet = workbook.active# 重命名工作表
sheet.title = "RenamedSheet"# 输出重命名后的工作表名称
print("重命名后的工作表名称:", sheet.title)# 保存工作簿
workbook.save('workbook_with_renamed_sheet.xlsx')
代码解释
sheet.title
:获取或设置工作表的名称。
注意:工作表的名称不能超过31个字符,且不能包含以下字符:
[ ] : * ? / \
。
3 切换与访问工作表
在一个工作簿中,可能包含多个工作表。我们可以通过名称或索引来访问不同的工作表。
通过名称访问工作表
import openpyxl# 打开现有工作簿
workbook = openpyxl.load_workbook('workbook_with_renamed_sheet.xlsx')# 通过名称访问工作表
sheet = workbook['RenamedSheet']# 输出当前工作表的名称
print("通过名称访问的工作表:", sheet.title)
通过索引访问工作表
import openpyxl# 打开现有工作簿
workbook = openpyxl.load_workbook('workbook_with_renamed_sheet.xlsx')# 通过索引访问第一个工作表
first_sheet = workbook.worksheets[0]# 输出当前工作表的名称
print("通过索引访问的工作表:", first_sheet.title)
代码解释
workbook['RenamedSheet']
:通过工作表名称访问特定工作表。workbook.worksheets[0]
:通过索引访问工作表,索引从0
开始。
4 工作表的复制与移动
有时候我们需要复制工作表或将其移动到工作簿中的不同位置。
复制工作表
openpyxl
允许复制工作表,但复制的工作表将不会保留原工作表中的图表或图片。
import openpyxl# 打开现有工作簿
workbook = openpyxl.load_workbook('workbook_with_renamed_sheet.xlsx')# 获取要复制的工作表
source_sheet = workbook['RenamedSheet']# 复制工作表
copied_sheet = workbook.copy_worksheet(source_sheet)# 输出复制后的工作表名称
print("复制后的工作表名称:", copied_sheet.title)# 保存工作簿
workbook.save('workbook_with_copied_sheet.xlsx')
代码解释
workbook.copy_worksheet(source_sheet)
:复制指定的工作表。复制后的工作表名称通常为原名称加上数字,如RenamedSheet Copy
。
移动工作表
通过修改工作表在 Workbook.worksheets
列表中的位置,可以移动工作表到指定的位置。
import openpyxl# 打开现有工作簿
workbook = openpyxl.load_workbook('workbook_with_copied_sheet.xlsx')# 获取要移动的工作表
sheet_to_move = workbook['RenamedSheet']# 将工作表移动到索引位置
workbook.move_sheet(sheet_to_move, 2)# 输出所有工作表的顺序
print("移动后的工作表顺序:", [sheet.title for sheet in workbook.worksheets])# 保存工作簿
workbook.save('workbook_with_moved_sheet.xlsx')
代码解释
workbook.remove_sheet(sheet_to_move)
:从当前工作薄中移除工作表。workbook.move_sheet(sheet_to_move, index)
:将工作表移动至索引位置。