Python办公自动化:使用openpyxl对工作表进行基本操作

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):将工作表移动至索引位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值