如何在 Python 中自动化处理 Excel 表格?

news2024/11/17 17:24:35
考虑一个场景,要求在网站上为 30,000 名员工创建一个帐户。手动重复执行此任务会非常枯燥乏味。此外,这将花费太多时间,这不是一个明智的决定。

现在想象一下从事数据输入工作的员工的生活。他们的工作是从 Excel 表格中获取数据并将其插入其他位置。他们浏览不同的网站和杂志,从那里收集数据,然后将其插入数据库。他们还需要对条目进行计算。

使用Python自动化无需手动执行这些类型的任务,只需花一个小时写一段代码并自动化这些类型的事情。本文中我们将创建一个小项目来学习 Python 中的自动化。

任务介绍

手动处理或更新数以千计的电子表格将花费太多时间。这可能需要数小时、数天甚至数月的时间。我们将编写一个 Python 程序来自动执行此任务。我们将处理下图中给出的数据。


在这个电子表格中,我们有各种交易的记录,但假设由于错误(人为错误或系统错误),第三列中列出的产品的价格是错误的。假设我们需要将价格降低 0.9。可以使用第四列中的数学公式手动完成此任务,但如果有数千条记录,则会花费太多时间(可能需要 1 周或两周)。

我们将编写一个 python 程序来自动化这个过程。此外,我们将为它添加一个图表。我们的 Python 程序将在几秒钟内为我们完成这项任务。

写一个简单的代码

为了处理这个 Excel 工作表,我们将使用openpyxl库 。在Centos8中执行下面命令安装openpyxl:

# yum -y install python3-openpyxl

现在我们可以导入这个包来处理我们的电子表格。在此之前,将电子表格添加到项目文件夹中。现在在你的文件夹中创建一个文件 prod.py 并写下下面给出的代码。

[root@localhost data]# vim prod.py

#!/usr/bin/python3
import time
import openpyxl as xl
from openpyxl.chart import BarChart, Reference

def process_workbook(filename):
    tm = time.strftime('%Y%m%d%H%M')
    wb = xl.load_workbook(filename)
    sheet = wb['Sheet1']

    for row in range(2, sheet.max_row + 1):
        cell = sheet.cell(row, 3)
        corrected_price = float(cell.value) * 0.9
        corrected_price_cell = sheet.cell(row, 4)
        corrected_price_cell.value = corrected_price

    values = Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4 , max_col=4)
    chart = BarChart()
    chart.add_data(values)
    sheet.add_chart(chart,'G2')
    wb.save(filename + " " + tm + '.xlsx')

process_workbook('/data/prod.xlsx')

解释代码的意思

我们将逐步解释上面编写的代码以了解完整的过程。

步骤 1. 要处理我们的电子表格导入 openpyxl 包(我们使用 xl 别名使我们的代码更简洁更短)。此外,要将图表添加到我们的电子表格,我们需要导入两个类 BarChart 和 Reference。导入time库,目的是另存表格文件,防止修改源文件。

import time
import openpyxl as xl
from openpyxl.chart import BarChart, Reference

步骤2. 创建一个函数,方便后续调用。

def process_workbook(filename):

步骤3. 现在我们需要加载 Excel 工作簿。写下下面给出的代码。tm保存当前时间,为后续使用。wb 返回对象,使用这个对象,我们访问 Sheet1工作表。

tm = time.strftime('%Y%m%d%H%M')
    wb = xl.load_workbook(filename)
    sheet = wb['Sheet1']

步骤4. 要访问第三列(价格列的条目)中第 2 行到最后一行有数据的条目,我们需要添加一个 for 循环。我们将此条目保存在可变单元格中。

    for row in range(2, sheet.max_row + 1):
        cell = sheet.cell(row,3)

步骤5. 现在我们需要计算修正后的价格。所以我们将保存在单元格变量中的值乘以 0.9。计算完成后,我们需要在第 4 列中添加所有更正后的价格。添加新列,引用第四列的单元格。创建单元格后,我们需要在此单元格中设置更正后的价格值。

        corrected_price = float(cell.value) * 0.9
        corrected_price_cell = sheet.cell(row, 4)
        corrected_price_cell.value = corrected_price

步骤6. 工作已经完成了一半。我们已经计算了更新后的价格,并将其添加到第四列中。现在我们需要向当前工作表添加一个图表。要创建图表,我们需要选择一个值的范围。

在这个项目中,我们将选择第四列中的值(更新后的价格),我们将在我们的图表中使用它(我们只需要一堆数字来创建一个图表。

我们需要使用Reference()类来选择一个范围的值。我们将向这个构造函数添加五个参数。第一个参数是我们正在处理的工作表。接下来的两个参数 min_row = 2 和 max_row= sheet.max_row 将选择从第 2 行到最后一个有数据的单元格。要仅从第四列中选择条目,我们需要传递另外两个参数 min_col=4 和 max_col=4。将结果存储在变量“值”中。

    values = Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4 , max_col=4)

步骤7. 现在我们已准备好创建图表。我们将为 BarChart() 类创建一个实例,变量名为chart。创建后,在此图表中添加值。之后,将此图表添加到工作表的G2单元格中。

    chart = BarChart()
    chart.add_data(values)
    sheet.add_chart(chart,'G2')

步骤8. 现在我们需要保存所有更新的条目和我们在上面的代码中创建的图表。我们将把它保存在一个用文件名+时间命名的文件中,因为我们不想在我们的程序有错误的情况下意外覆盖源文件。

wb.save(filename + " " + tm + '.xlsx')

步骤9. 执行process_workbook()函数,括号里面写如prod.xlsx文件的位置:

process_workbook('/data/prod.xlsx')

执行prod.py脚本

运行下面命令为脚本添加执行权限,并执行脚本:

[root@localhost data]# chmod +x /data/prod.py 
[root@localhost data]# /data/prod.py 

总结

这只是使用 Python 自动执行重复性无聊任务的一个示例。但请记住,自动化不仅仅与 Excel 电子表格有关。

【python学习】
学Python的伙伴,欢迎加入新的交流【君羊】:572077127
一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS 实现灯笼动画,祝大家元旦快乐

前言 👏CSS 实现大红灯笼动画,祝大家元旦快乐,2023越来越棒!速速来Get吧~ 🥇文末分享源代码。记得点赞关注收藏! 1.实现效果 2.实现步骤 定义一个灯笼的背景色bg,线条颜色lineColor :root …

数字时代下, 企业如何保证数据的安全

随着全球数字化进程的蓬勃发展,在互联网时代下技术和数据深度融合的数字经济模式为许多行业带来了更大创收。数据也已经成为了五大核心生产要素之一,驱动着国家、社会、企业全方位高速发展。“迎接数字时代,激活数据要素潜能,推进…

四、 Spring-MVC

MVC MVC :Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计规范。本质上也是一种解耦。 Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常…

使用CLIP构建视频搜索引擎

CLIP(Contrastive Language-Image Pre-training)是一种机器学习技术,它可以准确理解和分类图像和自然语言文本,这对图像和语言处理具有深远的影响,并且已经被用作流行的扩散模型DALL-E的底层机制。在这篇文章中,我们将介绍如何调整…

再获权威认可 百分点科技入选Forrester AI/ML平台主流供应商

近日,全球领先的研究和咨询公司Forrester发布了2022年第四季度中国AI/ML(人工智能/机器学习)平台报告《The AI/ML Platform Landscape In China, Q4 2022》,系统分析了AI/ML平台市场的业务价值、市场成熟度及市场动态,…

python基础语法24-多线程实操

上一节说了多线程的理论知识,今天来实际操作一下。 1.创建线程 python中有2中方法创建线程,分别为函数和类继承 (1).使用函数来创建线程 调用 _thread 模块中的start_new_thread()函数来产生新线程。语法如下: _thread.start_new_thread ( function, args[, kwargs] ) 参数说…

保护小程序,防止反编译:打造不怕反编译的小程序

保护小程序,防止反编译 打造不怕反编译的小程序 这几年,小程序、小游戏,非常火。 业内人都知道,小程序或小游戏,就是H5应用,就是htmlJS。这类应用,反编译很容易,网上就有很多方法教程。 对小…

我坦白→低代码功能我有,SQL练习题、数据可视化、数据填充助你高效

简介 今天勇哥看了一下群里的聊天信息,大家都在说低代码平台,见大家对于低代码这么热衷的情况下,勇哥也不藏着掖着了,先放几个低代码功能出来,给大家玩一玩,更多的功能敬请期待。 帮勇哥投个票&#xff1…

Docker进阶 — 一文掌握Docker基础

Docker进阶 — 一文掌握Docker基础 文章目录Docker进阶 --- 一文掌握Docker基础一、初识 Docker1. 什么是Docker2. Docker架构3. DockerHub4. Docker运行模式5. Docker和虚拟机的区别二、Docker 的安装1. Linux安装Docker2. Window 安装Docker环境配置1. 开启 Hyper-V服务2. 安…

五款炫酷精美动态登录页面,彩虹气泡动态云层深海灯光水母炫酷星空蛛网HTMLCSS源码

完整源码详见 微信公众号&#xff1a;创享日记 对话框发送&#xff1a;登录页面 获取HTMLCSSjs等源码文件 一、彩虹气泡登录页面 效果图&#xff1a; HTML源码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-…

linux 下coredump 生成及调试分析

Windows环境崩溃问题&#xff08;dump&#xff09;可根据vs调试或windbg工具查看.linux环境崩溃文件为core文件&#xff0c;可以使用gdb进行调试分析。 前提&#xff1a;都是都是用了root权限的用户操作。 1.生成core文件的前提 产生coredump的条件&#xff0c;首先需要确认…

优化改进YOLOv5算法之添加RepVGG模块(超详细)

在前面的文章中已经详细介绍了在本机上安装YOLOv5的教程&#xff0c;安装YOLOv5可参考前面的文章YOLOv5训练自己的数据集(超详细)https://blog.csdn.net/qq_40716944/article/details/118188085 目录 1、RepVGG原理 1.1 模型定义 1.2 为什么要用VGG式模型 1.3 结构重参数化…

基于ssm+mysql+jsp实现水果蔬菜商城系统

基于ssmmysqljsp实现水果商城系统一、系统介绍1、系统主要功能&#xff1a;2、环境配置二、功能展示1.主页(客户)2.登陆&#xff08;客户&#xff09;3.我的购物车(客户)4.我的订单&#xff08;客户&#xff09;5.主页&#xff08;管理员&#xff09;6.订单管理&#xff08;管理…

python寻找男厕所小便池的最佳站位

题目描述 相信我&#xff0c;每一个人内在都是有精神洁癖的。尤其是在题目所在的场景中。 下面我们就用一个算法来衡量一下&#xff01;&#xff01;&#xff01; 在考场里&#xff0c;一排有 N 个座位&#xff0c;分别编号为 0, 1, 2, …, N-1 。 当学生进入考场后&#xff0…

Python利用pandas读取Excel某列为键某几列为列表类型的值

在日常的办公中&#xff0c;我们经常要处理表格之间的数据匹配&#xff0c;会经常用到VLOOKUP函数&#xff0c;那么在Python中可以把VLOOKUP函数转换为字典&#xff0c;在转换成本地json文件&#xff0c;这样不仅可以匹配大批量数据&#xff0c;而且速度也会变快。 今天我们要…

第二十六讲:神州路由器PPP PAP认证的配置

实验拓扑图如下所示 操作步骤&#xff1a; 步骤1&#xff1a;连接网络拓扑图。 步骤2&#xff1a;RouterA基本配置。 router>enable &#xff01;进入特权模式 router#config &#xff01;进入全局配置模式 router_config#hostname RouterA …

移植RT-thread Nano完成一个 modbus接口的温湿度Slave设备,让上位机PC通过modbus协议获取温湿度

文章目录前言一、移植RT-thread Nano1、STM32CubeMX 安装 RT-Thread2、Keil安装RT-Thread二、STM32CubeMX 创建工程1.添加RT-Thread组件2、配置项目三、keil配置1、ANT20配置2、移植freeModebusRTU3、代码配置四、总结五、参考资料前言 硬件&#xff1a;stm32f103c8t6 核心板软…

springcloud+nacos+gateway+oauth2+jwt再相聚

在springcloud微服务架构下&#xff0c;如何进行统一的认证、鉴权&#xff0c;一直是大家非常关心的问题&#xff0c;下面对微服务架构下的认证和鉴权继续聊聊&#xff0c;一是自己的再次思考总结&#xff0c;二是希望对小伙伴有所帮助。 1、方案思路 在springcloud微服务中&am…

React学习08-React Redux

Redux Redux理解 redux是一个专门用于做状态管理的JS库(不是react插件库)。可以用在React, Angular, Vue等项目中, 但基本与React配合使用。作用: 集中式管理React应用中多个组件共享的状态。Redux只负责管理状态 文档 英文文档 中文文档 Github 需要使用Redux的情况…

2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇

2023年快要到来啦&#xff0c;很高兴这次我们又能一起度过~ 特辑最终篇&#xff01;&#xff01;&#xff01; 视觉中国 目录 一、前言 二、跨年烟花 三、效果展示 四、详细介绍 五、编码实现 index.html js 六、获取代码 需要源码&#xff0c;可以私信我(⊙o⊙)&…