#神器#合并多个工作簿中多个工作表

Python办公自动化:合并多个工作簿中多个工作表

  • 核心思想:外循环使用工作表控制,内循环使用工作簿控制
  • 核心工具:pandas合并多张Excel表格中多个sheet

1.算法设计:

外循环:根据工作表的数量设定外循环
- 内循环:循环获取文件夹中的Excel文件
- - 读取每个文件的工作簿的某一特定工作表数据到pandas库的DataFrame中
- - - 读取每个工作簿的所有工作表数据
- - - 合并(拼接)到临时变量中
- 把拼接(合并)到的数据存入新的工作簿的特定工作表中
- 保存
- 退出

2.Python扩展库:

Excel处理相关——xlwings
数据分析相关——pandas
操作系统相关——os

3.代码实现:

# 引入扩展库
import xlwings as xw
import pandas as pd
import os
# 定义一个存储数据的data变量,用于存储多个DataFrame对象
data=[]
# 定义好工作表名,也可以自动化获取工作表名
sht_names=['⑴家庭成员','⑵劳动力','⑶与户主关系']
# 新建一个Excel对象
app=xw.App(visible=False,add_book=True)
# 新建一个工作簿对象,用于存储合并后的工作簿
wb_new=xw.Book()
#遍历每一个工作簿文件
for name in sht_names:
    #遍历每一盒工作簿文件
    for file in os.listdir('./data08'):
        #获取文件名
        f='./data08/'+file
        # 读取特定工作簿中的工作表到pandas扩展库的DataFrame对象中
        df=pd.read_excel(f,sheet_name=name)
        data.append(df)
        df_new=pd.concat(data)
    sht=wb_new.sheets.add(name)
    sht.range('a1').value=df_new.columns.to_list()
    sht.range('a2').value=df_new.values.tolist()
    data=[]
wb_new.save('result.xlsx')
wb_new.close()
app.quit()    

4.心得体会

如果整块代码很难消化理解,不如拆分运行看看代码运行后的结果,方便理解。

猜你喜欢

转载自blog.csdn.net/weixin_42961082/article/details/115060175