百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python自动化:批量处理Excel,按要求筛选出数据并存到新表

off999 2024-12-17 15:43 36 浏览 0 评论

摘要: 你是否曾被重复的数据筛选工作折磨得筋疲力尽。现在,借助Python自动化工具,仅需几秒钟就能完成原本需要上千分钟的工作量,彻底告别了枯燥与低效!


引言

在仓库管理这个看似平凡却又充满挑战的岗位上,微信公众号粉丝小李担任着仓库主管的角色。每月,他都要执行一项看似简单却极其繁琐的任务:从过去几年的每月物品领用表中筛选出老板需要的数据,比如:领用数量大于1000的物品信息。这不仅是一项重复性极高的工作,而且手工操作一次表格就需要几分钟,每年的数据表都是按月存储的,操作一年的数据表就需要重复操作12次,而十年的数据就需要重复120次,耗费的时间累积起来高达上千分钟。

1.小李的挑战

小李在后台留言中描述了他的困境:“每年的数据表我都需要重复操作12次,十年的数据就是120次。这不仅让我感到疲惫,而且效率极低,手工操作一次表格就需要几分钟,累计起来就是上千分钟。”

2.传统方法的局限

在没有自动化工具辅助的情况下,小李的工作流程是这样的:

  • 打开每个Excel文件,逐月查找领用数量。
  • 手动筛选出领用数量大于1000的物品信息。
  • 复制这些信息并粘贴到新的Excel表中。
  • 保存并关闭每个文件,然后重复这个过程。

这个过程不仅耗时,而且容易出错,特别是当数据量庞大时,小李需要保持高度的专注力以避免遗漏或错误。

3.Python自动化的解决方案

我们为小李提供了一个Python脚本,这个脚本能够自动按条件筛选数据并保存到新的Excel里。使用pandas库,我们可以快速读取、筛选并合并数据。

import os
from openpyxl import load_workbook
import pandas as pd
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment




def extract_and_select_data(folder_path, dest_dir):


    try:
        for filename in os.listdir(folder_path):
            if filename.endswith('.xlsx'):
                src = os.path.join(folder_path, filename)
                os.makedirs(dest_dir, exist_ok=True)
                dest_file = os.path.join(dest_dir, filename)
                wb = load_workbook(src)
                data = {}  # 储存所有工作表中满足条件的数据,以工作表名称为键
                sheet_names = wb.sheetnames
                for sheet_name in sheet_names:
                    ws = wb[sheet_name]
                    qty_list = []
                    # 获取G列的数据,并用enumrate给其对应的元素编号
                    for row in range(2, ws.max_row+1):
                        qty = ws['G'+str(row)].value
                        qty_list.append(qty)


                    qty_idx = list(enumerate(qty_list))  # 用于编号


                    # 判断数据是否大于1000,然后返回大于1000的数据所对应的行数
                    row_idx = []  # 用于储存数量大于1000所对应的的行号
                    for i in range(len(qty_idx)):
                        if qty_idx[i][1] > 1000:
                            row_idx.append(qty_idx[i][0]+2)


                    # 获取满足条件的数据
                    data_morethan1K = []
                    for i in row_idx:
                        data_morethan1K.append(
                            ws['A'+str(i)+":"+'I'+str(i)])


                    data[sheet_name] = data_morethan1K
                    thin = Side(border_style="thin",
                                color="000000")  # 定义边框粗细及颜色


                wb = load_workbook("模板.xlsx")
                ws = wb.active
                for month in data.keys():
                    ws_new = wb.copy_worksheet(ws)  # 复制模板中的工作表
                    ws_new.title = month
                    # 将每个月的数据条数逐个取出并写入新的工作表
                    # 按数据行数计数,每行数据对应9列,所以每行需分别写入9个单元格
                    for i in range(len(data[month])):
                        ws_new.cell(
                            row=i+2, column=1).value = data[month][i][0][0].value
                        ws_new.cell(
                            row=i+2, column=2).value = data[month][i][0][1].value
                        ws_new.cell(
                            row=i+2, column=3).value = data[month][i][0][2].value
                        ws_new.cell(
                            row=i+2, column=4).value = data[month][i][0][3].value.date()
                        ws_new.cell(
                            row=i+2, column=5).value = data[month][i][0][4].value
                        ws_new.cell(
                            row=i+2, column=6).value = data[month][i][0][5].value
                        ws_new.cell(
                            row=i+2, column=7).value = data[month][i][0][6].value
                        ws_new.cell(
                            row=i+2, column=8).value = data[month][i][0][7].value
                        ws_new.cell(
                            row=i+2, column=9).value = data[month][i][0][8].value


                    # 设置字号,对齐,缩小字体填充,加边框
                    # Font(bold=True)可加粗字体


                    for row_number in range(2, ws_new.max_row+1):
                        for col_number in range(1, 10):
                            c = ws_new.cell(
                                row=row_number, column=col_number)
                            c.font = Font(size=10)
                            c.border = Border(
                                top=thin, left=thin, right=thin, bottom=thin)
                            c.alignment = Alignment(
                                horizontal="left", vertical="center", shrink_to_fit=True)
                wb.save(dest_file)
    except Exception as e:
        print(e)




if __name__ == "__main__":
    import time
    s_t = time.time()
    extract_and_select_data("data", "历年领料数量大于1K")
    e_t = time.time()
    print(f"用时{e_t-s_t}s")

4.效果展示

通过上述脚本,小李现在可以在20秒钟内完成之前需要上千分钟的工作。这个自动化工具不仅提高了效率,还减少了因手动操作导致的错误。更重要的是,它让小李能够将更多的时间和精力投入到更有创造性和战略性的工作上。

结语

Python自动化不仅仅是编程技巧的展示,更是一种工作方式的革新。它能够帮助我们从重复性劳动中解放出来,让我们有更多时间去做更有创造性的工作。小李的故事证明了自动化的力量,希望他的经历能够激励更多的人去探索和利用Python自动化办公的无限可能。


如果你也像小李一样,面临着重复性工作的苦恼,或者对Python脚本的编写有任何疑问,欢迎在评论区留言,我们将为你提供一对一的技术支持!


本文为原创技术文章,转载请标明出处。如果你喜欢本文,别忘了点赞、转发和关注我们的公众号,获取更多技术干货!



数海丹心

大数据和人工智能知识分享与应用

132篇原创内容

公众号



相关推荐

win7系统序列号怎么查(win7电脑的序列号怎么查)

你可以在cmd命令行窗口中输入以下相关命令,可以得到你要的信息查找主板厂商输入:wmicBaseBoardgetManufacturer查找主板型号输入:wmicBaseBoardgetP...

台式电脑怎么看配置好坏(台式机怎么看配置参数哪里看好坏)

如何分辨电脑配置好坏第一看CPU,CPU从上到下可分为i7,i5,i3等,数字越高越好。第二看显卡和内存,显卡内存现在至少4G或者8G起步,越高越好,第三看硬盘是否是固态,固态要比机械的运行速度快...

下载软件安装不了(为什么下载软件安装不了)

    一:检查手机内存是否充足,如果内存太小,需要更换大容量的SD卡。  二:检查手机是否设置允许安装除手机自带应用商店以外的应用。  方法一:需要从手机自带应用商店下载。  ①点击手机桌面上的应用...

现在建议更新win11吗(应该升级win11吗)

鲁大师更新11靠谱的,他只是给你提供一个方便的升级渠道而已。升级以后能否正常使用,还要看你原来的系统是否是正版。如果原来的系统是正版,升级完成后,可以正常使用。如果原来的系统是盗版,也是可以升级的,只...

windows7旗舰版好用吗(win7旗舰版好用么)

win7旗舰版挺好使的不过现在可以选择更win10。Windows7旗舰版属于微软公司开发的Windows7操作系统系统系列中的功能最高级的版本,也被叫做终结版本,是为了取代WindowsXP...

2025年最好用的手机浏览器(2021最好的手机浏览器)

可以使用uc浏览器或者是QQ浏览器,最新版本都是带有Flash插件的,火狐浏览器手机版也是一开始拥有Flash插件。以下是详细介绍:  1、uc浏览器是阿里旗下的浏览器,只需要下载最新版,然后进去就可...

电脑一键还原系统在哪里(电脑一键还原系统怎么用)
  • 电脑一键还原系统在哪里(电脑一键还原系统怎么用)
  • 电脑一键还原系统在哪里(电脑一键还原系统怎么用)
  • 电脑一键还原系统在哪里(电脑一键还原系统怎么用)
  • 电脑一键还原系统在哪里(电脑一键还原系统怎么用)
纯净版win11在哪下载(在哪下win10纯净版)

Win11纯净版中,有一些常用的应用软件,包括但不限于以下几款:MicrosoftEdge:微软推出的新一代浏览器,支持多种设备,具备更快的加载速度和丰富的扩展功能。MicrosoftOffice...

电脑软件最全的应用商店(电脑软件最全的应用商店下载)
  • 电脑软件最全的应用商店(电脑软件最全的应用商店下载)
  • 电脑软件最全的应用商店(电脑软件最全的应用商店下载)
  • 电脑软件最全的应用商店(电脑软件最全的应用商店下载)
  • 电脑软件最全的应用商店(电脑软件最全的应用商店下载)
win7自带激活工具在哪个位置

恩,其实这些就是激活系统的工具,朋友可以通过计算机属性看看你的系统是不是激活了。如果没有的话,建议你使用OEM7F7那个,使用方法是右键,以管理员身份运行,然后点击开始体验正版,等下,重新启动系统...

无法激活因为无法连接到组织

 解决方法: 首先我们右键点击“开始菜单”,选择“WindowsPowerShell(管理员)”。 在windowsPowershell窗口中逐一输入如下三行命令,并回车键执行命令。 slmgr...

一个2tb的u盘多少钱(2tb优盘)

假的就算你买回来插到电脑上显示是2TB也没用,你复制东西到U盘里就会显示U盘已满不能复制,就算复制进去了也会有一部分不能使用。或者你买回来用360的U盘鉴定软件鉴定一下就知道真假了。还有就是你看看...

软件商店下载官方网站(软件商店正版软件下载)

软件商店安装的方法步骤如下:1.第一步,需要注册一个微软账户,然后点击桌面左下角的开始图标,然后在开始菜单中找到微软商店图标,点击进入。2.第二步,点击进入应用商店主页。3.第三步,在商店中搜索...

系统应用架构(系统应用架构有哪些)

一、目的不同:系统架构是对已确定的需求的技术实现构架、作好规划,运用成套、完整的工具,在规划的步骤下去完成任务。应用构架是描述了IT系统功能和技术实现内容的构架。二、实现方式不同:系统架构通过规划程序...

雨林木风ghostxpsp3纯净版(雨林木风xp系统怎么样)

1.你下载的雨林木风GHOSTXPSP3纯净版Y8.0是一个克隆光盘映像文件,首先将其刻录成光盘,这个光盘是一个带有启动系统的系统克隆安装光盘;2.将电脑设置成光驱启动(在启动电脑时连续按DEL键...

取消回复欢迎 发表评论: