阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

255次阅读
没有评论

共计 2949 个字符,预计需要花费 8 分钟才能阅读完成。

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

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

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

任务介绍

手动处理或更新数以千计的电子表格将花费太多时间。这可能需要数小时、数天甚至数月的时间。我们将编写一个 Python 程序来自动执行此任务。我们将处理下图中给出的数据。
如何在 Python 中自动化处理 Excel 表格?
在这个电子表格中,我们有各种交易的记录,但假设由于错误(人为错误或系统错误),第三列中列出的产品的价格是错误的。假设我们需要将价格降低 0.9。可以使用第四列中的数学公式手动完成此任务,但如果有数千条记录,则会花费太多时间(可能需要 1 周或两周)。

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

写一个简单的代码

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

# yum -y install python3-openpyxl

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

[root@localhost data]# vim prod.py

#!/usr/bin/python3import time
import openpyxl as xl
from openpyxl.chart import BarChart, Referencedef 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_pricevalues = 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')

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

解释代码的意思

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

步骤 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 = 2max_row= sheet.max_row 将选择从第 2 行到最后一个有数据的单元格。要仅从第四列中选择条目,我们需要传递另外两个参数 min_col=4max_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 自动执行重复性无聊任务的一个示例。但请记住,自动化不仅仅与 Excel 电子表格有关。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计2949字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7805591
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...