补充篇:盘点6种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据...

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

春潮带雨晚来急,野渡无人舟自横。

一、前言

    大家好,我是Python进阶者。前一阵子给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件手把手教你4种方法用Python批量实现多Excel多Sheet合并,而后在Python进阶交流群里边有个叫【扮猫】的粉丝遇到一个问题,她有很多个Excel表格,而且多个excel里多个sheet表,现在需要对这些Excel文件进行合并。

07164e95315eb122e41b310bd9c60734.png

    用上面链接对应的方法进行合并,发现只能够合并Sheet,其他的就合并不了,这确实是个问题。

a2ed2c7f09c7ca844924b1050c642766.png

    诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一起来看看吧!

二、说明

    前天本来针对这个问题,已经发布了一篇文章,盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据,里边盘点了4个方法,测试之后完全可行,这篇文章十分的受欢迎,评论和点赞真不错。

ca0c8699070c87946159a49b94d9fca7.png

    今天这里继续补充两个方法,高手在民间,感谢【🌑(这是月亮的背面)】和【韩峰】两位大佬提供的思路和代码。

三、项目实现

    之前提供4种方法,在这里就不再赘述了,大家可以戳这篇文章自行获取学习,源码都在文章中了,盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据。这里给大家介绍另外两种方法,一起来看看吧!
1、方法五

    这个方法是来自【韩峰】大佬的分享,代码如下。

caf41fbcad4ee1c13d3312a3a18c4c05.png

# -*- coding: utf-8 -*-
import pandas as pd
import os


path = r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777'
file_list = []
for root, dirs, filename in os.walk(path):
    for file in filename:
        file_list.append(path + '\\' + file)


# The_All_data = pd.DataFrame()
All_data = pd.DataFrame()


for Prowler in file_list:
    ereader = pd.ExcelFile(Prowler)    # 读到文件名称
    one_sheet_name = ereader.sheet_names   # 读到文件中所有sheet的名字
    for Sheet_Prowler in one_sheet_name:
        All_sheet_data = pd.read_excel(ereader, sheet_name=Sheet_Prowler)     # 读取文件名称中所有sheet的数据
        temp = pd.concat([All_data, All_sheet_data])
        All_data = pd.DataFrame(temp)
    # Montage = pd.concat([The_All_data, All_sheet_data])    # 拼接表格:将一个一个表格中所有sheet的数据放到汇总表之中
    # The_All_data = pd.DataFrame(Montage)                  # 将添加了新的数据的表格赋值给总表,下一次就会接到这个表的最后面。


print(All_data)


All_data.to_csv(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777\The_All_data.csv')
    上面这个代码是可以跑起来了,功能上实现没有问题,其实逻辑和之前的方法是一致的,就是变量命名方面看着有些让人不太舒服。
2、方法六    

    这个方法是来自【🌑(这是月亮的背面)】大佬的分享,代码如下。

790dd9ab3bf0ec8349c19ff5e0ee2074.png

# -*- coding: utf-8 -*-
from pathlib import Path
import pandas as pd


path = Path(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\888')
pd.concat([pd.concat(pd.read_excel(i, sheet_name=None)) for i in path.glob("[!~]*.xls*")],
          ignore_index=True).to_excel("result.xlsx", index=False)


print('合并完成!')

    如果没有前面几个方面的铺垫,上来直接看这个代码,相信大部分都直接晕乎了,我这里给他稍微拆分了下,方便大家理解,实际上确实是一行代码,可以在上面的聊天截图中看到,着实精辟!

    关于效果展示方面,这里就不贴图了,亲测好使。

8b2aafd1ca73e4f9328e67398314c03c.png

   说到这里,又想多唠叨两句,有时候看别人的代码,确实可以跑,自己拿过来,不一定能跑,就很迷,下图是【冫马讠成】大佬自己测试的时候遇到的问题,其实就是少模块,安装xlrd之后,就可以运行正常了。

bef64fff0f61aec9e6630e1dd2e8ee4f.png

四、总结

    本文从实际工作出发,基于Python编程,介绍了6种方法,实现批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据,为大家减少了很多复制粘贴的麻烦,省时省力,还不容易出错。代码不多,循环追加有点绕,想想也就明白了,不懂的随时留言提问,大家一起学习进步。

    有想法的小伙伴还可以将文章中的代码进行打包,做成一个exe可执行的小软件,包装好发给别人使用,也可以赚点小费噢,关于打包的教程这里不再赘述,欢迎前往:三个你必须要记住的Pyinstaller打包命令——利用Python实现打包exe

    最后感谢【韩峰】、【🌑(这是月亮的背面)】、【小小明】等大佬在代码实现过程中提供的代码、建议和指导,感谢粉丝【扮猫】等人的提问,感谢粉丝【冫马讠成】、【AA】、【Hua Bro】、【多隆ᯤ⁶ᴳ】、【灰帽子】、【司徒、墨渊】、【鞋鳄势力】、【PI】、【凌云剑圣】等人的参与和测试,让我们共同进步!

    小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

4b77e89ccec08ac8970c2b34bbb96527.png

------------------- End -------------------

往期精彩文章推荐:

756b8bcfd2e17bb5326a5dfe3a1e7d69.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值