前言

大家好,在之前的十几篇办公自动化系列文章中,我们大多是以 真实的案例需求
来讲解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.rowcell.columncell.coordinate)  

6.获取多个格子的值

这里也有一个细节,Excel中每一列由字母确定,是字符型;每一行由一个数字确定,是 整型
。当然,上面的三种方法都是获取一堆表格,现在要输出每一个表格的值就需要 遍历


for cell in cells:   
    print(cell.value)  

三种方法依然有自己的 局限性
,如果我需要特定范围的值,且懒得换算成字母数字坐标。例如我想要获取第2行至第5行、第1列至第3列的全部单元格。因此必须掌握第4种方法:

7.读取所有的行


for row in sheet.rows:   
    print(row)  

Excel写入

1. 保存Excel


workbook.save(filename='Excel工作表1.xlsx')  
  • 如果读取和写入Excel的路径相同则为对原文件进行 修改
  • 如果读取和写入Excel的路径不同则为 保存成新的文件

2.写入单元格

cell.value = '业务需求  

3.写入一行或多行数据

)

4.将公式写入单元格并保存

5.插入一行或多行

6. 插入一列或多列

7.删除多行

8.删除多列

9. 移动范围数据

10. 创建新的Excel表格


from openpyxl import Workbook  
workbook = Workbook()  

Excel样式调整

1. 设置字体样式

2. 设置对齐样式

  • 水平对齐:distributed, justify, center, left, fill, centerContinuous, right, general
  • 垂直对齐:bottom, distributed, justify, center, top

3. 设置边框样式

  • 边线样式:double, mediumDashDotDot, slantDashDot, dashDotDot, dotted, hair, mediumDashed, dashed, dashDot, thin, mediumDashDot, medium, thick

4. 设置单元格填充样式

5. 设置行高和列宽

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)

参考文章

https://mp.weixin.qq.com/s?__biz=MzU1NDk2MzQyNg==&mid=2247488638&idx=1&sn=574dd40e19e1f5e7149faefc6596b2e6&chksm=fbdaccf3ccad45e50f8214e77361a1fff1bebe6bdcaed67a13c1ead5347c65419b096edb9a35#rd


 目录