自动化操作Excel利器:Python第三方库Openpyxl指南)

带你走进 @ 机器人时代
Discover 点击上面蓝色文字,关注我们

自动化操作Excel利器:Python第三方库Openpyxl指南)


Python函数
入门必备:神奇的Excel自动化工具Openpyxl库 , 网络上一直是零零碎碎的教程,今天我们为大家总结一下:
三大模块 , 我们将通过简单的实例来介绍他们的用法:
1、Workbook操作工作簿的模块(工作簿,一个excel文件包含多个sheet 。)
2、Worksheet操作表格的模块(工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等 。)
3、Cell操作单元格的模块(单元格,存储数据对象)
先创建一个对象,新建一个工作簿:

from openpyxl import Workbook#新建一个工作簿,创建一个对象new_wb=Workbook('test2.xlsx')new_wb.save('test2.xlsx')
运行结果:
自动化操作Excel利器:Python第三方库Openpyxl指南)

在相同的目录下生成了一个新的excel文件,如果读取一个工作簿 , 我们使用如下代码:

from openpyxl import load_workbook#打开已有的工作簿 , 创建一个对象wb = load_workbook('test1.xlsx')#激活当前sheet表ws = wb.active#打印当前工作表的名字print(ws.title)运行结果:Sheet1

如果要修改工作表的名字 , 我们运行以下代码:
from openpyxl import load_workbookwb = load_workbook('test1.xlsx')ws.title='第一个表'wb.save('test1.xlsx')
运行结果:
自动化操作Excel利器:Python第三方库Openpyxl指南)

如果我们需要新建表,可以使用下面的命令:
from openpyxl import load_workbookwb = load_workbook('test1.xlsx')wb.create_sheet('最后的位置')wb.create_sheet('倒数第二的位置',-1)wb.create_sheet('最前面的位置',0)wb.save('test1.xlsx')

最后一定要记得保存,参数里面要写上为文件名:
自动化操作Excel利器:Python第三方库Openpyxl指南)

如果要删除表,使用下面的命令:

from openpyxl import load_workbookwb = load_workbook('test1.xlsx')del wb['倒数第二的位置']wb.save('test1.xlsx')
结果如下:
自动化操作Excel利器:Python第三方库Openpyxl指南)

可以看到,刚才创建的'倒数第二的位置'这个表被删除了!我们可以通过下面的命令来指定工作表:
wb.sheetnames:# 获取文档所有工作表名称,返回一个列表
wb['Sheet1']:# 获取指定的工作表
wb.active:# 获取当前活跃的工作表

from openpyxl import load_workbookwb = load_workbook('test1.xlsx')#获取所有的工作表名称print(wb.sheetnames)#指定即将要操作的工作表print(wb['Sheet2'])#获取当前激活的工作表print(wb.active)wb.save('test1.xlsx')运行结果:['最前面的位置', '第一个表', 'Sheet2', 'Sheet3','最后一个表', '最后的位置']

如果想修改当前表标签的颜色:
【自动化操作Excel利器:Python第三方库Openpyxl指南)】
from openpyxl import load_workbookwb = load_workbook('test1.xlsx')#修改当前工作表标签颜色(红色)ws=wb.activews.sheet_properties.tabColor = 'ff0000'wb.save('test1.xlsx')
运行结果如下:
自动化操作Excel利器:Python第三方库Openpyxl指南)

复制工作表:
from openpyxl import load_workbookwb = load_workbook('test1.xlsx')ws=wb.activewb.copy_worksheet(ws)wb.save('test1.xlsx')

运行结果如下:
自动化操作Excel利器:Python第三方库Openpyxl指南)

可以通过下面命令获得工作表的信息:

from openpyxl import load_workbookwb = load_workbook('test1.xlsx')# 获取文档的字符集编码print(wb.encoding, end='nn')# 获取文档的元数据如标题,创建者,创建日期等print(wb.properties)wb.save('test1.xlsx')结果如下:utf-8Parameters:creator='openpyxl', title=None, description=None, subject=None, identifier=None, ........

如何获取某一个表中的最大行和列呢?
from openpyxl import load_workbookwb = load_workbook('test1.xlsx')ws=wb.activey=ws.max_columnx=ws.max_rowprint(x,y)wb.save('test1.xlsx')结果:5 3
我们来验证一下,执行前已经写入一些数据:
自动化操作Excel利器:Python第三方库Openpyxl指南)

果然是5行 , 3列的数据!如果要获取其中单元格的值:

from openpyxl import load_workbookwb = load_workbook('test1.xlsx')# 获取单元格的值ws=wb.active# 选择单个单元格(获取指定位置的单元格对象)print(ws['A2'].value)print(ws.cell(2, 1).value)# 先行后列 , 都是索引下标wb.save('test1.xlsx')结果:66
我们来看看:
自动化操作Excel利器:Python第三方库Openpyxl指南)

获取单元格的属性有哪些命令:
from openpyxl import load_workbookwb = load_workbook('test1.xlsx')ws=wb.active# 获取指定位置的单元格对象cell = ws['B2']print('单元格列索引',cell.col_idx)print('单元格列索引',cell.column)print('单元格的行索引',cell.row)print('单元格列名',cell.column_letter)print('单元格的坐标',cell.coordinate)wb.save('test1.xlsx')输出:单元格列索引 2单元格列索引 2单元格的行索引 2单元格列名 B单元格的坐标 B2

重点来了,怎么修改单元格的值呢?

from openpyxl import load_workbookwb = load_workbook('test1.xlsx')#写入单元格ws=wb['第一个表']#在A2单元格写入数据ws['A2']='写入第1个数据'#在第1行,第2列写入数据ws.cell(1,2).value='https://www.itzhengshu.com/excel/写入第2个数据'wb.save('test1.xlsx')
运行结果如下:
自动化操作Excel利器:Python第三方库Openpyxl指南)

在最后一行追加数据的方法:

from openpyxl import load_workbookwb = load_workbook('test1.xlsx')#在最后一行追加数据ws=wb['第一个表']ws.append([1, 2, 3])wb.save('test1.xlsx')
运行结果:
自动化操作Excel利器:Python第三方库Openpyxl指南)

读取行和列的数据,准备数据如下
自动化操作Excel利器:Python第三方库Openpyxl指南)

读取代码:

from openpyxl import load_workbookwb = load_workbook('test1.xlsx')#读取列的方法ws=wb['第一个表']#读取第1列(方法1)x=ws.max_rows=ws[f'1:{x}']print('第1列数据,方法1')for i in s:# print(type(i))print(i[0].value)#元组需要下标#读取第1列(方法2)p=ws['A']print('第1列数据,方法2')for j in p:print(j.value)#对象不可下标#读取行的方法#读取第一行(方法1)m=ws['1']print('第1行数据,方法1')for q in m:print(q.value)# 对象不可下标#读取第一行(方法2)n=ws['2:3']print('第2行到第3行数据,方法2')#获得一个二维数组,需要2次循环取出数据for d in n:for u in d:print(u.value)wb.save('test1.xlsx')
输出结果如下:
第1列数据,方法1A1A2A3第1列数据,方法2A1A2A3第1行数据,方法1A1B1C1第2行到第3行数据 , 方法2A2B2C2A3B3C3

删除行和列:

#删除行和列ws.delete_cols(1)# 删除第一列,以此类推、n代表删除第n列ws.delete_rows(1)# 删除第一行 , 以此类推、n代表删除第n行


运行结果如下:
自动化操作Excel利器:Python第三方库Openpyxl指南)


以上是Openpyxl的常规操作,如果需要设置样式 , 插入公式等更多的应用,需要导入Openpyxl的其他模块;
更多复杂的数据处理可能还会用到NumPy或者Pandas等第三方库 。
写程序可能比不上熟练使用VBA来得快,但对于长期重复的操作 , Python的优势是显而易见的 。
坚持学习,每天都能进步一点点!
往期回顾:
  • 来来来 , 送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
  • RPA技术在旅行社销售业务中如何凤凰涅槃??
  • 【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!


本文引用和摘录相关内容,请联系侵删 。
- END -


最后 , 文章有帮助到你的话【点赞在看
激励我们分享更多的干货!

相关经验推荐