openpyxl学习-打开、新建、排序、删除、隐藏和复制sheet

本文详细介绍了使用Python的openpyxl库在Excel中操作工作簿,包括打开已存在的sheet,新建并排序工作表,删除sheet,复制sheet以及隐藏sheet的功能。
摘要由CSDN通过智能技术生成

1、打开一个工作簿中已经存在的sheet

from openpyxl import load_workbook
wb = load_workbook(filename=路径+文件名称)
ws = wb['sheet名称']

2、新建一个工作簿并且新建一个sheet

from openpyxl import Workbook
wb = Workbook() # 新建一个工作簿
ws = wb.active # 获取当前活动的工作表,默认情况下,活动工作表是Excel文件中的第一个工作表,也可以通 
               # 过wb.active = index来设置活动工作表的索引。
# 如何知道现在是编辑的那一个sheet呢!
print(ws.title) 

new_worksheet = wb.create_sheet() # 新建一个sheet
new_worksheet.title = 'sheetname' # 给新的sheet一个名字
# 或者
new_worksheet = wb.create_sheet( 'sheetname',n) #n表示sheet在工作簿中是位置,默认从0开始 

3. 对多个sheet进行排序

3.1 使用的函数 move_sheetenumerate

 排序的方法有两种:

  • 第一种:所有的完成之后单独进行排序,此时如果是新建的工作簿比较方便。
  • 第二种:在建立sheet的时候规定其位置,此方法可以用在新建的和打开的旧的的工作簿。
函数: move_sheet
  • 语法:
move_sheet(title,n) 
# title :sheet名称
# n:负数表示向左移动,正数表示向右移动,数字表示移动几个位置
  • 实例:新建的工作簿
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = 'sheet1'
new_worksheet_summary = wb.create_sheet('sheet2',2)
# new_worksheet_summary.title = 'summary'
PN = wb.create_sheet('sheet3',1)
Project = wb.create_sheet()
Project.title = 'sheet4'
sort_lst = wb.sheetnames
print(sort_lst)

# output 
#['sheet1', 'sheet3', 'sheet2', 'sheet4']
desired_order = ['sheet4','sheet3','sheet2','sheet1']  # 以你期望的顺序列出工作表的名称

# 根据给定的顺序,重新排列工作表
for idx, sheet_name in enumerate(desired_order, 1):
    wb.move_sheet(sheet_name, idx)
sort_lst = wb.sheetnames
print(sort_lst)

# output 
# ['sheet4', 'sheet3', 'sheet2', 'sheet1']

  • 实例二:已经有的excel文件
    from openpyxl import Workbook
    from openpyxl import load_workbook
    wb = load_workbook(r'.\test.xlsx')
    sort_lst = wb.sheetnames
    print(sort_lst)
    # output 
    #['sheet4', 'sheet3', 'sheet2', 'sheet1']
    desired_order = ['sheet2','sheet1','sheet4','sheet3']  # 以你期望的顺序列出工作表的名称
    
    # 根据给定的顺序,重新排列工作表
    for idx, sheet_name in enumerate(desired_order, 1):
        wb.move_sheet(sheet_name, idx)
    sort_lst = wb.sheetnames
    print(sort_lst)
    # output 
    # ['sheet2', 'sheet1', 'sheet4', 'sheet3']
    wb.save(r'.\test2.xlsx')

 3.2 直接在创建sheet的时候指定sheet的位置
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = 'sheet1'
new_worksheet_summary = wb.create_sheet('sheet2',2)
# new_worksheet_summary.title = 'summary'
PN = wb.create_sheet('sheet3',1)
Project = wb.create_sheet()
Project.title = 'sheet4'
sort_lst = wb.sheetnames
sort_lst

4、 删除sheet

# 方法一:
wb.remove(wb["sheet名称"])
# 方法二:
del  wb['删sheet名称']

实例:

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = 'sheet1'
new_worksheet_summary = wb.create_sheet('sheet2',2)
PN = wb.create_sheet('sheet3',1)
Project = wb.create_sheet()
Project.title = 'sheet4'
sort_lst = wb.sheetnames
print(sort_lst)
#output
#['sheet1', 'sheet3', 'sheet2', 'sheet4']
# 删除sheet
del wb['sheet4']
print(wb.sheetnames)
#output
# ['sheet1', 'sheet3', 'sheet2']
wb.remove(wb['sheet3'])
print(wb.sheetnames)
#output
#['sheet1', 'sheet2']

 

5、复制sheet:

5.1使用iter_rows和循环复制:
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
new_worksheet = wb.create_sheet(title='sheet名称')
for row in ws.iter_rows(values_only=False, max_row=4):   
    for cell in row: 
        new_worksheet[cell.coordinate].value = cell.value

优点:

  • 灵活性:可以选择性地复制源工作表的一部分内容,而不是整个工作表。
  • 可以在复制过程中进行任何必要的处理,例如数据转换或筛选。

缺点:

  • 需要编写更多的代码来实现复制过程。
  • 可能需要处理单元格的坐标和值,稍微复杂一些。
5.2 使用copy_worksheet方法:
new_worksheet = wb.copy_worksheet(ws)
  1. 优点:

    • 简单:一行代码就可以完成整个工作表的复制。
    • 不需要手动处理单元格的坐标和值,可以直接复制格式和数据。

    缺点:

    • 只能复制整个工作表的内容,无法选择性地复制部分内容。
    • 无法在复制过程中进行额外的处理,只能简单地复制内容。
5.3 两种方案的异同点:

相同点:

  • 两种方法都可以用于将源工作表的内容复制到新的工作表。
  • 复制后的新工作表将包含与源工作表相同的数据和格式。

总的来说,如果你需要灵活地选择性复制部分内容并且需要在复制过程中进行额外的处理,那么使用iter_rows和循环复制的方法可能更适合。但如果你只需要简单地复制整个工作表的内容,而不需要进行额外的处理,那么使用copy_worksheet方法会更加简单和方便。

6、隐藏sheet

ws.sheet_state = None 

# None 可以被替换为:
# "hidden":隐藏
# "visible":显示
# "veryHidden":深度隐藏

veryHidden称它为深度隐藏,正常来说我们隐藏一个工作表后,鼠标右击工作表会弹出一个菜单,里面会有一个“取消隐藏”的选项,你可以选中想要取消隐藏的工作表然后点确定,该工作表就会重新出现。但当你设置成veryHidden,该工作表就不会出现在"取消隐藏"的框里。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值