多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!
回复“书籍”即可获赠Python从入门到进阶共10本电子书
前言
大家好,在之前的十几篇办公自动化系列文章中,我们大多是以真实的案例需求来讲解Python如何进行自动化办公操作,并且多次使用到openpyxl
来处理表格,今天我们就来详细的盘点Python操作Excel神器openpyxl的各种操作!
本文将以详细图表/代码的形式讲解如何对Excel进行读取、写入及样式调整,可以当成速查手册使用,随用随查,建议收藏!
安装
openpyxl
是一个非标准库,因此需要自行安装,安装过程并不困难,Windows/Mac用户均可以在命令行(CMD)/终端(Terminal)中使用pip安装
pip install openpyxl
前置知识
在使用这个模块之前我们需要对Excel表格结构有个比较细致的了解,见下图:简而言之,一个Excel工作簿
workbook
由一个或者多个工作表sheet
组成,一个sheet可以看作是多个行row
组成,也可以看作是多个列column
组成,而每一行每一列都由多个单元格cell
组成!
读取Excel
1.载入Excel
from openpyxl import load_workbook
workbook = load_workbook(filename='测试.xlsx’)
print(workbook.sheetnames)
注意load_workbook
只能打开已经存在的Excel,不能创建新的工作簿
2.根据名称获取工作表
from openpyxl import load_workbook
workbook = load_workbook(filename='其他.xlsx')
print(workbook.sheetnames)
sheet = workbook['工作业务']
如果只有一张工作表也可以用:
sheet = workbook.active
3.获取表格内容所在的范围
print(sheet.dimensions)
4.获取某个单元格的具体内容
这边提供两种方法,注意都需要以cell.value
形式输出具体值
5.获取某个单元格的行、列、坐标
print(cell.row, cell.column, cell.coordinate)
6.获取多个格子的值
这里也有一个细节,Excel中每一列由字母确定,是字符型;每一行由一个数字确定,是整型。当然,上面的三种方法都是获取一堆表格,现在要输出每一个表格的值就需要遍历:
for cell in cells:
print(cell.value)
三种方法依然有自己的局限性,如果我需要特定范围的值,且懒得换算成字母数字坐标。例如我想要获取第2行至第5行、第1列至第3列的全部单元格。因此必须掌握第4种方法:
![](https://filescdn.proginn.com/bc461251e88f3a12c82195b909acd80b/519af3c7a638999945976bed6179a8f7.webp)
7.读取所有的行
for row in sheet.rows:
print(row)
Excel写入
1. 保存Excel
workbook.save(filename='Excel工作表1.xlsx')
如果读取和写入Excel的路径相同则为对原文件进行修改, 如果读取和写入Excel的路径不同则为保存成新的文件
2.写入单元格
cell = sheet['A1']
cell.value = '业务需求
3.写入一行或多行数据
4.将公式写入单元格并保存
sheet['K11'] = '=AVERAGE(K1:K10)'
5.插入一行或多行
![](https://filescdn.proginn.com/68e96e751eb7f0161ff35f252d27ce48/599673e1fc2e527f4e5196d3188c0fc4.webp)
6. 插入一列或多列
![](https://filescdn.proginn.com/05d7e96ea6ea0daf224ad0eee183c670/18d1b885bb030ff4dc9a11ef3fbbd985.webp)
7.删除多行
![](https://filescdn.proginn.com/2eb4cac0cf6406b01bf7b1aa4bab8142/26e6e5e34f783db47e9781557c7683de.webp)
8.删除多列
![](https://filescdn.proginn.com/e3c776e32078d877c15c0dd666606433/c383704faab5c3f5c3632d945c69ff74.webp)
9. 移动范围数据
![](https://filescdn.proginn.com/11aae80a47dc4c49beea9f15e815a2a3/2f62cd8fe7d1b0e1f144a044e1252fbb.webp)
10. 创建新的Excel表格
from openpyxl import Workbook
workbook = Workbook()
Excel样式调整
1. 设置字体样式
![](https://filescdn.proginn.com/2adb1e056bd99d3e7077c31661ed531d/b76c7995412baab17975f45b92bc00a3.webp)
2. 设置对齐样式
![](https://filescdn.proginn.com/9cb0e8d86c6571bc5b6108b20c085dba/a0627708fd994f4a6ef611a92c445e88.webp)
水平对齐: distributed, justify, center, left, fill, centerContinuous, right, general
垂直对齐: bottom, distributed, justify, center, top
3. 设置边框样式
![](https://filescdn.proginn.com/fddfe49dab31de4d752b8e27704cfd89/138d301544dc7bec3a5eb4b12cf152f9.webp)
边线样式: double, mediumDashDotDot, slantDashDot, dashDotDot, dotted, hair, mediumDashed, dashed, dashDot, thin, mediumDashDot, medium, thick
4. 设置单元格填充样式
![](https://filescdn.proginn.com/a99f3e5e8a051c57715726b78f2abdae/cbe40c129959be48260c99993870b4e8.webp)
5. 设置行高和列宽
sheet.row_dimensions[1].height = 50
sheet.column_dimensions['C'].width = 20
6. 单元格合并与取消
# 合并
sheet.merge_cells('A1:B2')
sheet.merge_cells(start_row=1, start_column=3,
end_row=2, end_column=4)
# 取消合并
sheet.unmerge_cells('A1:B2')
sheet.unmerge_cells(start_row=1, start_column=3,
end_row=2, end_column=4)
------------------- End -------------------
往期精彩文章推荐:
![](https://filescdn.proginn.com/3fbb888db4e67a128354897fa704018e/baf8a42b5398bbc62f0ec4eafe7fb7a3.webp)
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~