openpyxl模块
00 min
2024-4-23
openpyxl 是用于读取和写入 Excel 2010 xlsx / xlsm / xltx / xltm 文件的 Python 库。
安装openpyxl模块方法:打开cmd窗口,然后输入pip install openpyxl即可。
 

第一章 简介

1.1 关于初学Excel自动化的思路

项目背景:本人从事手机芯片低功耗测试工作,每天会产生大量Excel文件需要处理并汇总。例如我需要测试30个应用使用场景下的手机功耗表现,通过自研工具测试每个应用会产生一个功耗波形文件和功耗数据Excel文件,文件命名规范为:手机名_测试场景_应用名_测试时间.xlsx我要将Excel文件内数据复制粘贴到一个汇总表中,汇总表中每一项的数据标题为应用名。
思路
首先你需要将Excel文件所在路径改成当前工作路径os.chdir(),然后读取路径中的Excel文件,生成一个待处理文件名列表。(有时候需要筛选,可能当前路径有其他文件);然后你要先创建一个汇总表,再for循环遍历待处理文件名列表,每个文件名先用字符串分割方法获取应用名作为数据的标题,在打开对应的Excel,读取里面的值,然后放入到汇总表中,最后保存汇总表。
 

1.2Excel基本对象介绍

很多同学在网上搜教程的时候,对下面属性不了解的会带来一定困扰。
对象
翻译
简写
workbook
工作簿
wb
worksheet
工作表
ws
cell
单元格
cell
row
row
column
col

1.2 操作Excel的基本思路

  1. 用openpyxl.load_workbook()/openpyxl.Workbook()新建/加载Excel文件
  1. wb.worksheets[index]等指定活动工作表(计算机逻辑中,不指定没法进一步获取工作表的信息)
  1. 用sheet.cell(row,column).value等读取/写入表格数据或其他操作
 

第二章 读取Excel文件

2.1 对给定路径下的文件筛选xlsx文件

可能你要处理的Excel所在路径还有其他格式的文件,那么就需要对给定路径下的文件进行筛选。如果对目录中的文件不知道如何筛选,那么后面的教程对你来说也是空中楼阁,详细请看之前内容:文件和目录
  • filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
  • endswith(suffix[, start[, end]]) 函数用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置
 

2.2 打开/新建/保存Excel工作簿

自动化第一步就是打开/新建文件,即创建一个workbook对象,要么打开已存在的需要处理数据的Excel文件,要么新建一个空白文件做汇总。
  • 打开:openpyxl.load_workbook(filename,data_only = False/True)
    • 注:data_only = True/False (参数可选,如果读取带公式的单元格的话)True:读取单元格公式计算值 False:读取单元格公式(默认参数为False)
  • 新建:openpyxl.Workbook()
 

2.3 指定活动工作表

依据2.2创建了一个workbook对象之后,并不能直接对单元格进行读取等操作,还需要创建一个worksheet对象,指定活动工作表。工作簿包含多个多个工作表,你要告诉计算机指定读取哪张工作表才可以。在这里,小编总结了三种方式。
上面方法涉及到工作表名获取,工作表的索引获取,现在来看如何获取工作表的信息

1.4 单元格读取

有了 Worksheet 对象后,就可以按名字访问 Cell 对象。
cell对象的四个属性:value属性(单元格保存的值)row属性(所在行,为整数数字)column属性(所在列,为字母)coordinate属性(所在行列,如第一个单元格为“A1”)

1.5 行、列 读取值

可以通过切片方法访问工作表的一(数)行/列,或一个巨型区域所有Cell对象。再通过循环遍历里面所有单元格。
 
 

第二章 编辑Excel文件

2.1 工作表操作

1、新建工作表 (两参数都为可选)

2.2 单元格操作

1、单个单元格写入
2、移动指定范围数据
3、插入空白行
4、删除行/列
5、指定范围写入值
在Excel中,列是用字母表示的,但是在代码中,如果表示列,可以用数字,A列就是第一列,可以用数字1表示。
2、按行追加数据append()
apend()方法是按行向Excel中追加数据,从当前行的下一行开始追加。默认从第1行开始,如果想要从指定的行开始需要通过sheet._current_row =row_num设置

第三章 格式设置

3.1 单元格合并/拆分

3.2 字体样式

3.3 对齐方式

3.4 行高列宽

 

第四章 偏门知识

1、工作表保护