#炫酷# 批量合并多个Excel表格

前言:日常办公中遇到大量要处理的Excel表格合并的问题,一个文件夹下由很多张Excel表格,而每张表格的表头是一样的,格式也是相同的,如果单靠人工去合并,3到4张合并还相对OK,但是超过10张,估计手一抖,合并错了,还得重来,真是太反人性了,有这个时间,干点别的不好么,哪怕睡会觉,不香么…
好了 ,废话不说了,上干货

1.1 需求解读

  • 看图,要合并某个文件夹下所有的Excel文件第一个sheet页数据到一个Excel文件的一个sheet页,说白了就是,一个sheet页要有所有的数据。
    合并12张表格数据
  • 最终的效果:
    统一合并到一张sheet页
  • 既然需求已经明确,结果也很明确接下来就是思路梳理,看看到底采用什么方法

1.2 思路梳理(算法设计)

本过程分两部分,具体的实现步骤
需要用到的扩展库

1.2.1 实现步骤

  • 1.获取所有要合并的文件,调入内存当中

  • 2.创建一个临时变量,用于暂存文件中的数据,也是在内存当中进行处理

  • 3.循环读取文件并存放至临时变量中

  • 4.循环读取后,关闭掉文件

  • 5.新建文件,用于存储临时变量中数据

  • 6.设置文件的表头:机型 品牌 销量(台) 市占(%) 市占同比±(%) 均价(元/台) 均价同比±(%) 上市时间 产品规格 产品技术

  • 7.设置文件内容,即将临时变量中的数据全部赋给该文件

  • 8.保存该文件(给他一个存储路径)

1.2.2 扩展库使用

  • 需要用到的扩展库
  • 1.获取文件夹下的所有文件,需要操作系统相关库,即os
  • 2.读取文件内容,这里的操作对象是Excel,扩展库为xlwings
  • 3.循环体控制,用for 循环

1.3 代码实现

# 导入相关扩展库
import os
import xlwings as xw
# 获取所有要合并的文件
files=os.listdir('./20top50量机型')
# 隐式打开文件处理
app=xw.App(visible=False,add_book=True)
data=[]
for file in files:
    f='./20top50量机型/'+file
    wb=xw.Book(f)
    print('正在打开文件....')
    sht=wb.sheets[0]
    data+=sht.range('A2').expand().value
# 创建一个文件
wb_new=xw.Book()
sht_new=wb_new.sheets[0]
# 获取表头
wb_01=xw.Book('./20top50量机型/线上整体.TOP50机型1量.xlsx')
sht_01=wb_01.sheets[0]
sht_header=sht_01.range('A1:K1').value
# 将上述表头作为新文件的表头
sht_new.range('A1').value=sht_header
# 将临时变量中的数据全部赋到新文件中
sht_new.range('A2').value=data
print('合并完成')
# 存储新文件,并重命名
wb_new.save('2020(1-12)销量统计.xlsx')
# 退出app
app.quit()
---------------
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
正在打开文件....
合并完成
    

1.4 结果检查

最终结果

1.5 心得体会

  • 设计算法的过程,需要用心体会,代码的实现操作类似于我们人类操作/发生动作的过程,也就是在模拟人类的行为,真正有价值的点在于将人类重复的行为进行代码化。
  • 日常生活中还是工作中,需要用心观察,重复的行为,重复的操作,重复的过程…
  • 与各位共勉
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值