Python:一键提取千万个Excel指定数据,告别枯燥重复工作


摘要: 每月两次,每次数天,面对着上百个Excel表的数据处理任务,重复、枯燥、耗时,崩溃。直到他发现了Python自动化办公的奥秘...


引言

在数据分析的世界里,小李是一名普通的数据分析师。每个月,他都要面对一项艰巨的任务:从上千个Excel表中提取特定的数据,汇总到一个新的工作簿中。传统的方法,需要他逐个打开Excel表,按列筛选,复制粘贴,耗时耗力,而且极易出错。初步估计,完成一个表格需要5分钟,上千个表格就是5000分钟的工作量。这项工作不仅重复性高,而且枯燥无味,让小李对工作失去了热情和热爱。

1.小李的苦恼

小李在后台留言说:“每个月,我都要花费数天的时间来完成这项重复性的工作。每次筛选、复制、粘贴,都是对我的耐心和精力的巨大考验。”

2.传统方法的局限性

小李的工作流程是这样的:

  • 打开每个Excel文件,逐个查找需要的数据。
  • 筛选出老板需要的数据列。
  • 复制并粘贴到新的工作表中。
  • 保存并关闭每个文件。

这个过程不仅耗时,而且容易出错。每一次的筛选都可能遗漏数据,每一次的复制粘贴都可能引入错误。

3.Python自动化的解决方案

小李关注了我们的公众号,并在后台留言了自己的问题。我们为他提供了一个Python自动化脚本,能够批量处理文件夹下所有Excel文件,提取特定数据到新的工作簿中。

import os
import xlwings as xw
import pandas as pd




def extract_data(folder_path, dst, name):
    if not os.path.exists(folder_path):
        print('文件夹路径不正确,请检查')
        return


    # 启动Excel应用,不显示界面
    app = xw.App(visible=False, add_book=False)
    try:
        files = [os.path.join(folder_path, f) for f in os.listdir(
            folder_path) if f.endswith('.xlsx')]
        data = []
        for file in files:
            workbook = app.books.open(file)
            for sheet in workbook.sheets:
                values = sheet.range('A1').expand().options(pd.DataFrame).value
                filtered = values[values['部门'] == name]##此处的条件可以自定义任意多个
                if not filtered.empty:
                    data.append(filtered)
            workbook.close()
        if data:
            new_workbook = app.books.add()
            new_worksheet = new_workbook.sheets.add(name)
            new_worksheet.range('A1').value = pd.concat(
                data, ignore_index=True)
            new_workbook.save(dst)
            new_workbook.close()
        else:
            print(f"未找到名称为{name}的数据")
    except Exception as e:
        print(f"错误信息: {e}")
    finally:
        app.quit()




# 使用示例
folder_path = '年假_按部门'
dst = './汇总数据.xlsx'
name = '工程部'
extract_data(folder_path, dst, name)

4.效果展示

通过上述脚本,小李可以一键提取上百个Excel表中的特定数据,汇总到一个新工作簿中。整个过程只需几秒钟,准确无误,大大提升了工作效率,同时也让小李重新找回了对工作的热情。

结语

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


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

数海丹心

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

132篇原创内容

公众号