使用 openpyxl 操作 Excel

由于单位有任务,需要按照名册制作多个工作表。手动复制和修改内容太费事了,所以使用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.activetarget = 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 函数随机打分,并通过对应表格中的扣分项随机扣分。实现批量操作表格的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457619.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git】07 本地仓库同步到GitHub或Gitee

文章目录 一、远端仓库配置1.1 配置密钥认证1.2 新建仓库 二、本地配置2.1 添加远程库 三、push推送四、拉取合并与推送4.1 拉取fetch4.2 合并merge4.3 推送push 五、总结 一、远端仓库配置 1.1 配置密钥认证 1)ssh-keygen 本地端命令行上执行ssh-keygen命令&…

2024-02-06(Sqoop)

1.Sqoop Apache Sqoop是Hadoop生态体系和RDBMS(关系型数据库)体系之间传递数据的一种工具。 Sqoop工作机制是将导入或者导出命令翻译成MapReduce程序来实现。在翻译出的MapReduce中主要是对inputformat和outputformat进行定制。 Hadoop生态包括&#…

Jmeter 基于Docker 实现分布式测试

基于Docker 实现分布式测试 制作Jmeter基础镜像制作工作节点镜像启动工作节点启动控制节点遇到的问题 使用Docker 部署Jmeter非常方便,可以省略软件的安装以及配置,比如jdk、jmeter。需要部署多个工作节点可以节省时间。 控制节点(Master-主节…

数据库触发器

在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息 和 库存信息 分 别存放在 2 个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时…

服务器被黑,安装Linux RootKit木马

前言 疫情还没有结束,放假只能猫家里继续分析和研究最新的攻击技术和样本了,正好前段时间群里有人说服务器被黑,然后扔了个样本在群里,今天咱就拿这个样本开刀,给大家研究一下这个样本究竟是个啥,顺便也给…

工业以太网交换机引领现代工厂自动化新潮流

随着科技的飞速发展,现代工厂正迎来一场前所未有的自动化变革,而工业以太网交换机的崭新角色正是这场变革的关键组成部分。本文将深入探讨工业以太网交换机与现代工厂自动化的紧密集成,探讨这一集成如何推动工业生产的智能化、效率提升以及未…

【教学类-47-01】UIBOT+IDM下载儿童古诗+修改文件名

背景需求: 去年12月,我去了其他幼儿园参观,这是一个传统文化德育教育特色的学校,在“古典集市”展示活动中,小班中班大班孩子共同现场念诵《元日》《静夜思》包含了演唱版本和儿歌念诵版本。 我马上也要当班主任了&a…

分享66个行业PPT,总有一款适合您

分享66个行业PPT,总有一款适合您 66个行业PPT下载链接:https://pan.baidu.com/s/1kcUOfR_xtH9CAJC12prcTw?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知…

矩阵的正定(positive definite)性质的作用

1. 定义 注意,本文中正定和半正定矩阵不要求是对称或Hermite的。 2. 性质 3. 作用 (1)Axb直接法求解 cholesky实对称正定矩阵求解复共轭对称正定矩阵求解LDL实对称非正定矩阵求解复共轭对称非正定矩阵求解复对称矩阵求解LU实非对称矩阵求解…

[晓理紫]AI专属会议截稿时间订阅

AI专属会议截稿时间订阅 关注{晓理紫|小李子},每日更新最新AI专属会议信息,如感兴趣,请转发给有需要的同学,谢谢支持!! 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新AI专属…

pycharm deployment 灰色 一直无法点击

我的development的配置如下,我看了很多教程一直不知道为什么一直是灰色的, 文件夹配置: 如果你这里 Autodect,那么你Mapping 的文件夹应该是应该省略这个前缀的,例如我下面,我应该将本地文件夹映射到/home…

【经典项目】Java实现打地鼠小游戏(附源码)

一、游戏回顾 打地鼠游戏是一款简单而有趣的反应游戏。游戏中,你需要在地洞中出现的地鼠出现时迅速点击它们,以获得分数。以下是一般的打地鼠游戏玩法介绍: 准备阶段:游戏开始时,你会看到一个由多个地洞组成的游戏界面…