python openpyxl操作Excel的安装使用
作者:简讯Alfred
引言
由于单位有任务,需要按照名册制作多个工作表。手动复制和修改内容太费事了,所以使用 python 完成此项工作,为之后的此类工作提供一个通用脚本。
安装依赖库
pip install openpyxl lxml
我们需要用到 openpyxl。在官方文档中提到,如果需要处理较大的文件,在安装了 lxml 后会非常有用,而且 python 在解析一些 html 和其他文本时也会用到 lxml,所以借这个机会安装完成。
如果在操作 Excel 时需要处理图片,还需要安装 pillow
pip install pillow
这样我们就把全部依赖安装好了。
使用
在操作之前,我先说一下需求。单位已经给我了一个考评表模板,需要根据这个模板,按名册生成工作表(sheet),并把每一个工作表的名称改成名册中的名字。每一个工作表需要修改天填表日期,分数,和扣分项。
这样就有了思路,简单来说就是打开一个 Excel 表格,先按照名册的人数复制工作表,把工作表的名称替换成名册中的名字,再把每个工作表中对应坐标格内的数据批量(随机)修改。
因为我们操作已经存在的文件,所以直接加载文件就行。我们通过 faker 库生成若干虚拟名字,这样一个名册就准备好了。接下来就是复制工作表了。
import openpyxl # 文件位置 doc_path = "~/考评表.xlsx" # 加载文件 wb = openpyxl.load_workbook(doc_path) # 注:names 列表通过 faker 库生成 names = ['邓淑兰','董凤兰','田洋','陈波','逯丽','柯金凤','王勇','陈玉梅','王飞','殷秀芳','胡旭','韩玲','李杰','陈建军','张杨','蔡成','徐倩','贾颖','刘峰','陈桂珍','宋淑珍','苏红霞','杜玉','林辉','陈佳','朱军','罗洋','王亮','王鹏','黄东']
我们根据名册数量,复制相应数量工作表并保存。
# 复制 sheet 工作表 people_number = len(names) for item in range(1, people_number): ws = wb.active target = wb.copy_worksheet(ws) wb.save(doc_path)
再根据名称批量修改工作表。
# 根据姓名列表修改工作表名称 sheet_names = wb.sheetnames for num, item in enumerate(sheet_names): open_sheet = wb[item] open_sheet.title = names[num] wb.save(doc_path)
再根据需求完成工作表的遍历修改,因为每一个工作表相当于用坐标表示的,所以我们只要根据坐标来批量或随机修改工作表中的内容。
例如考评表中分数在 A17 的格子内,那我们遍历所有的工作表,修改 A17 的格子。
# 得分所在坐标 record_loc = "A17" # 修改姓名和得分 for item in wb.sheetnames: ws = wb[item] ws[record_loc] = f"姓名:{item} 得分:{random.choice([90, 100])}" wb.save(doc_path)
这些操作基本就把所有的表格修改完成,如果得分是在某个范围,我们就可以使用 random 函数随机打分,并通过对应表格中的扣分项随机扣分。实现批量操作表格的目的。
以上就是python openpyxl操作Excel的安装使用的详细内容,更多关于python openpyxl操作Excel的资料请关注脚本之家其它相关文章!