有时候会需要将所有的excel进行批量化的合并,而且一个excel里边有好多的表。这个时候就很难受,手工去做估计会瘫痪。因此鄙人写了一套代码,希望能帮助你,也希望你能给个关注:
import pandas as pd
import time
import os
# 写入字段
with open('result.csv', 'a+', encoding='gbk') as fo:
fo.write('单位'+','+'时间+','+'事件'+','+'地址'+ '\n')
while True:
filePath = input('请输入文件夹绝对路径:')
for i, j, k in os.walk(filePath):
# print(k)
for files in k:
file_name = filePath+'\\'+files
# 每个excel指定30张表,可以修改
for sheet in range(0, 30):
try:
# 读取表位置,表的位置sheet_name是数字,与表中的名字无关
location = pd.read_excel(file_name, sheet_name=sheet, index_col=None, skipfooter=1)
# 读取表格信息,去除表头与表尾
info = pd.read_excel(file_name, sheet_name=sheet, index_col=None, header=2, skipfooter=2)
# 读取单个表头信息
address = re.findall('地址:(.*)', location.ix[0].values[0])[0]
# 读取项目所需字段
info = info.ix[:, ['单位', '时间', '事件', '地址']].values
# 遍历出所有表格信息
for detail in info:
val1 = str(detail[0])
val2 = str(detail[1])
val3 = str(detail[2])
val4 = str(detail[3])
# 将处理好的数据写入文件result.csv
with open('result.csv', 'a+', encoding='gbk') as f1:
f1.write(val1+','+val2+','+val3+','+val4+'\n')
except:
continue
print('{}处理完成'.format(files))
此代码涉及到很多知识点:
1、文件操作walk函数
2、pandas操作读取excel以及处理表与表的头尾
3、csv的写入,实质上不用导入csv库。每个逗号代表一个表格