最近工作遇上了需要批量合并表格,专门过来更新一版,希望能有效减轻各位表哥表姐的工作压力。
来个目录清晰一点,
目录
一、按Sheet 合并
二、按Excel 合并
一、按 Sheet 合并
所有代码的实现都离不开在内心翻译成大白话后再组装的顺序,下面我来分解一下需要做的步骤:
- 读取Excel里面所有Sheet
- 合并数据
- 保存新的数据
明确目标我们就开干:
1、读取所有Sheet
#导入需要的模块
import xlrd
#将excel的路径赋值
excel_name =( 'C:/Users/文件夹名字/Excel名字.xlsx' )
wb = xlrd.open_workbook(excel_name)
# 获取workbook中所有的表格
sheet = wb.sheet_names()
#这里我们可以打印一下看看内容
print(sheets)
2、合并数据
#导入需要的模块
import pandas as pd
from pandas import DataFrame
# 循环遍历所有Sheet
alldata = DataFrame()
for i in range(len(sheet)): #'sheet'对应第“1”步的赋值
df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')
alldata = alldata.append(df)
#同样的,我们来打印看看内容是不是自己想要的
print(alldata)
3、保存新的数据 ,也就是生成另外一个Excel文档
#Excel名字前面一串是保存的路径
alldata.to_excel('C:/Users/文件夹名字/Excel名字.xlsx')
好了!!看到这里的同学简直棒呆!!
完成了基本步骤我们就汇总即可完成构思了!实际就是下面这么短的几个代码就完了。
如果想在原文件上加汇总后的Sheet,再引用一个库就好了:openpyxl
import xlrd
import pandas as pd
from pandas import DataFrame
excel_name =('C:/Users/文件夹名字/Excel名字.xlsx' )
wb = xlrd.open_workbook(excel_name)
sheet = wb.sheet_names()
#print(sheet)
alldata = DataFrame()
for i in range(len(sheet)):
df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')
alldata = alldata.append(df)
# print(alldata)
alldata.to_excel( 'C:/Users/文件夹名字/Excel名字.xlsx' )
--------------------------------分开清晰点----------------------------------
二、按 Excel 合并
多个Excel合并的代码看上去比合并多个sheet更简单。老规矩翻译成大白话
- 将各个Excel的数据都收集起来
- 合并收集起来的数据
- 保存新的数据
1、将各个Excecl的数据收集起来,也就是读取所有Excel文档了
#导入模板
import os
for file in os.walk( 'C:/Users/文件夹名字' ):
print(file)
看起来简单吧~
2、合并收集起来的信息,就是说先收集
#导入模板,file[2]是索引
for table in file[2]:
path = file[0] + '/' + table
data = pd.read_excel(path)
n = n+1
l.append(data)
#收集好数据之后,就将新数据新增到空列表方便下一步
data_result = pd.concat(l)
3、保存新的数据,这一步其实和“按 Sheet 合并”一样
data_result.to_excel ( '试试啊.xlsx' ,index = 0 )
好了,我们将步骤汇总看看效果:
import os
import pandas as pd
for file in os.walk( 'C:/Users/文件夹名字' ):
print(file)
for table in file[2]: #file[2]是索引对应内容,好奇的话print一下对比就好
path = file[0] + '/' + table
data = pd.read_excel(path)
n = n+1
l.append(data)
print('第'+str(n)+'个表已提取')
data_result = pd.concat(l)
data_result.to_excel ('试试啊.xlsx',index = 0 ) #保存Excel文档及命名
Goooood!!!至此已经讲完了,如果大家还可以按照自己的喜好修饰一下,譬如这样的效果:
全文完。