一、openpyxl库与模块
openpyxl
openpyxl
是Eric Gazoni和Charlie Clark联合开发,用来处理Excel电子表格的Python第三方库。因为它是第三方库,所以需要根据系统环境,在本地使用正确的命令来安装这个库,命令如下所示:
Windows系统:pip install openpyxl
MacOS系统:pip3 install openpyxl
openpyxl
库可以处理Excel2010以后的电子表格格式,包括:xlsx/xlsm/xltx/xltm
from…import…
用import
直接导入openpyxl库的话,每次使用我们都要带openpyxl.
因此我们使用 from 库/模块 import 函数/方法/类/变量
且可以引入多个名字:from 库/模块 import 函数1, 类1
与直接import对比:
二、工作簿
1、获取工作簿对象
(1)使用函数load_workbook
语法:load_workbook(filename)
参数filename
代表了工作簿的路径,即.xlsx
文件的路径
(2)类Workbook
语法:Workbook()
使用以上两种方法时,输出结果中显示<openpyxl.workbook.workbook.Workbook object at xxxxxxxx>
,证明工作簿对象已经被成功创建
2、工作簿对象的基本操作
(1)保存
前面使用Workbook:工作簿对象.save(filename)
,参数filename
表示新工作簿的文件路径
前面使用load_workbook:也可以使用方法save(filename)
。
如果参数filename
不变,即保存在原有路径,相当于修改原文件;若参数filename
变化,即保存在新的路径,相当于另存为新的文件。
总结:
(2)获取到工作簿中活动的工作表对象
active
语法:工作簿对象.active
3、总结
三、工作表
工作表就是工作簿中,位于下方的标签。
现实中的工作表,在openpyxl中对应着工作表对象(Worksheet对象)
工作簿对象(Workbook)和工作表对象(Worksheet):
1、获取工作表
(1)active:获取活动的工作表
语法:工作簿对象.active
通常情况下,活动工作表是指当前正在操作的工作表,打开一个.xlsx
文件后,默认显示的工作表即为活动工作表
(2)按表名取表
如果我们已知工作表的名称,就可以以表名为索引,用工作簿对象['表名']
的方式取到指定的工作表对象。
(3)比较
2、工作表对象的基本操作
(1)获取单行或单列
在Excel表格中,使用数字表示行数,用英文字母表示列名
在openpyxl中,我们可以通过工作表对象[行数]
或工作表对象['列名']
的方式获取到一个元组,这个元组中包含了指定行或列中的所有数据
(2)获取多行数据:iter_rows()
语法:
参数min_row
和max_row
分别表示最小行索引和最大行索引,最小行索引的值默认为1,最大行索引的值默认为表格中有数据的最下面一行的行数;
参数min_col
和max_col
分别表示最小列索引和最大列索引,最小列索引的值默认为1,最大列索引的值默认为表格中有数据的最右面一列的列数;
参数values_only
决定是否返回单元格的值,如果为True则返回单元格的值,如果为False则返回单元格对象。通常情况下,只读数据时,需要将该参数设置为True,要写入数据时,保持其为默认的False就好。
工作表对象的方法iter_rows()
会返回一个可迭代对象,该对象中有n个元组,n为参数中指定的行数,每一个元组都代表了表格中的一行。
因此,通常情况下,iter_rows()
会和for循环结合使用,从而使得我们取出其返回的可迭代对象中的每一个元组,即表格中指定范围内的每一行数据。
如果指定的行中没有数据,就会返回一个空的元组 (None,None)
(3)添加数据:append()
语法:工作表对象.append(列表/元组)
使用append()添加完数据后,如果想要在本地的Excel文件中看到添加后的数据,就一定要将工作簿保存下来,即使用工作簿对象的方法save()
3、总结
四、单元格
单元格对象代表工作表中的一个单元格
1、获取单元格对象
(1)通过for row in 工作表对象.iter_rows()
来获取指定范围的行,当参数values_only
为默认的False时,我们得到的row就是一个个由单元格对象组成的元组,可以通过索引或者for循环遍历的方式来获取单独的单元格对象
一句话总结下第一种方式:通过iter_rows()
来获取指定范围的行,再通过索引从行中取出单元格对象
(2)for cell in 工作表对象[行数]
for cell in 工作表对象['列名']
一句话总结下第二种方式:通过行数或者列名来指定具体的行或列,然后通过for循环遍历获取指定行或列中的每一个单元格对象
(3)工作表对象['单元格坐标']
一句话总结下获取单元格对象的第三种方式:通过单元格坐标来指定具体的单元格,从而获取到对应的单元格对象
刚才的代码运行结果,都是输出了单元格对象,但是单元格内的具体数据并没有显示出来。因此,如下:
2、单元格对象的基本操作
借助单元格对象的属性value
,我们就可以得到具体的数据;同时,我们也可以通过这个属性给单元格对象赋值(修改单元格的值或给单元格添加值)
例:
3、总结
五、样式和图形设置(略)
六、总结
思维导图:
重难点: