当前位置: 首页 > news >正文

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):将工作表移动至索引位置。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【性能优化】DNS解析优化
  • Python,Spire.Doc模块,处理word、docx文件,极致丝滑
  • 数据结构-排序的概念、应用及其算法实现1(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序)
  • C++第三十六弹---二叉搜索树的性能飞跃:AVL树原理与实现
  • 钢铁百科:A572Gr60和SA572Gr60材质分析、A572Gr60和SA572Gr60简介
  • 【智能启航,速通电工电子!SmartEDA如何成为你的学习加速器】
  • KCP协议(一)
  • 如何制作微课?微课的制作方法和步骤教程,微课录制软件推荐!
  • 数据依赖,执行顺序,promise,async/await
  • 系统架构师质量属性与架构评估案例分析
  • hive sql 处理多层 json 数组
  • 用R语言运用 Shiny 包打造基于鸢尾花数据集的交互式数据可视化应用
  • 探索Delphi的图形与图像处理能力:从基础到高级应用
  • 获利能力段-新增自定义特性、特性派生增强
  • 手撕初阶数据结构之---排序
  • conda常用的命令
  • download使用浅析
  • ECMAScript6(0):ES6简明参考手册
  • FastReport在线报表设计器工作原理
  • mongo索引构建
  • Node 版本管理
  • pdf文件如何在线转换为jpg图片
  • rc-form之最单纯情况
  • Redis字符串类型内部编码剖析
  • vue 配置sass、scss全局变量
  • vue的全局变量和全局拦截请求器
  • windows下mongoDB的环境配置
  • 阿里云前端周刊 - 第 26 期
  • 离散点最小(凸)包围边界查找
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 算法---两个栈实现一个队列
  • 我有几个粽子,和一个故事
  • 再谈express与koa的对比
  • elasticsearch-head插件安装
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • ###C语言程序设计-----C语言学习(3)#
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (利用IDEA+Maven)定制属于自己的jar包
  • (每日一问)基础知识:堆与栈的区别
  • (三)elasticsearch 源码之启动流程分析
  • (三)Honghu Cloud云架构一定时调度平台
  • .a文件和.so文件
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .gitignore文件设置了忽略但不生效
  • .net core 依赖注入的基本用发
  • .Net IE10 _doPostBack 未定义
  • .NET NPOI导出Excel详解
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 药厂业务系统 CPU爆高分析
  • .Net环境下的缓存技术介绍