咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

带你走进 @ 机器人时代

Discover 点击上面蓝色文字,关注我们


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文件,如果读取一个工作簿,我们使用如下代码:

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


如果要修改工作表的名字,我们运行以下代码:

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') ws.title='第一个表' wb.save('test1.xlsx')

运行结果:

如果我们需要新建表,可以使用下面的命令:

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') wb.create_sheet('最后的位置') wb.create_sheet('倒数第二的位置',-1) wb.create_sheet('最前面的位置',0) wb.save('test1.xlsx')


最后一定要记得保存,参数里面要写上为文件名:

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

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') del wb['倒数第二的位置'] wb.save('test1.xlsx')

结果如下:

可以看到,刚才创建的'倒数第二的位置'这个表被删除了!我们可以通过下面的命令来指定工作表:

wb.sheetnames:# 获取文档所有工作表名称,返回一个列表
wb['Sheet1']:# 获取指定的工作表
wb.active:# 获取当前活跃的工作表

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


如果想修改当前表标签的颜色:

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') #修改当前工作表标签颜色(红色) ws=wb.active ws.sheet_properties.tabColor = 'ff0000' wb.save('test1.xlsx')

运行结果如下:

复制工作表:

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') ws=wb.active wb.copy_worksheet(ws) wb.save('test1.xlsx')


运行结果如下:

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

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


如何获取某一个表中的最大行和列呢?

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') ws=wb.active y=ws.max_column x=ws.max_row print(x,y) wb.save('test1.xlsx') 结果: 5 3

我们来验证一下,执行前已经写入一些数据:

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

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') # 获取单元格的值 ws=wb.active # 选择单个单元格(获取指定位置的单元格对象) print(ws['A2'].value) print(ws.cell(2, 1).value) # 先行后列,都是索引下标 wb.save('test1.xlsx') 结果: 6 6

我们来看看:

获取单元格的属性有哪些命令:

from openpyxl import load_workbook wb = 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_workbook wb = load_workbook('test1.xlsx') #写入单元格 ws=wb['第一个表'] #在A2单元格写入数据 ws['A2']='写入第1个数据' #在第1行,第2列写入数据 ws.cell(1,2).value='写入第2个数据' wb.save('test1.xlsx')

运行结果如下:

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

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') #在最后一行追加数据 ws=wb['第一个表'] ws.append([1, 2, 3]) wb.save('test1.xlsx')

运行结果:

读取行和列的数据,准备数据如下

读取代码:

from openpyxl import load_workbook wb = load_workbook('test1.xlsx') #读取列的方法 ws=wb['第一个表'] #读取第1列(方法1) x=ws.max_row s=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列数据,方法1 A1 A2 A3 第1列数据,方法2 A1 A2 A3 第1行数据,方法1 A1 B1 C1 第2行到第3行数据,方法2 A2 B2 C2 A3 B3 C3


删除行和列:

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


运行结果如下:


以上是Openpyxl的常规操作,如果需要设置样式,插入公式等更多的应用,需要导入Openpyxl的其他模块;

更多复杂的数据处理可能还会用到NumPy或者Pandas等第三方库。

写程序可能比不上熟练使用VBA来得快,但对于长期重复的操作,Python的优势是显而易见的。

坚持学习,每天都能进步一点点!

往期回顾:

  • 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
  • RPA技术在旅行社销售业务中如何凤凰涅槃??
  • 【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!


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

- END -


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