关于 excel 多表格合并只需要改文件路径及表头的成品代码
背景:在项目实施过程中,有很多客户有将多个子公司或多机构合并的需求
下面给出一个关于表格合并的通用版本,主要合并总数不要超过 65000 条,详细代码如下:
import pandas as pd
import datetime
import os
import glob
import xlrd
import xlwt
import time
核心所有表的筛选和合并
def excel_merge():
biaotou = [‘账号’, ‘银行机构代码’, ‘银行机构名称’, ‘存款人名称’, ‘注册地地区代码’, ‘账户名称’, ‘账户性质’, ‘开户许可证核准号’, ‘开户日期’, ‘销户日期’, ‘状态’, ‘账号’, ‘银行机构代码’, ‘银行机构名称’, ‘存款人名称’, ‘注册地地区代码’, ‘账户名称’, ‘账户性质’, ‘开户许可证核准号’, ‘开户日期’, ‘销户日期’, ‘状态’]
# 在哪里搜索多个表格
filelocation = “C:\Users\54520\Desktop\ 表格拼接 \” #C:\Users\54520\Desktop\ 表格拼接
# 当前文件夹下搜索的文件名后缀
fileform = “xlsx”
# 合并后的表格命名为 file
file = “人行当日开销户汇总”
# 首先查找默认文件夹下有多少文档需要整合
# 从pythonscripts文件夹下读取所有excel表格,并将所有的名字存储到列表filearray
filearray = []
for filename in glob.glob(filelocation + "*." + fileform):
filearray.append(filename)
print("在默认文件夹下有%d个文档哦" % len(filearray))
ge = len(filearray)
matrix = [None] * ge
print(matrix)
# 实现读写数据
#下面是将所有文件读数据到三维列表cell[][][]中(不包含表头)
for i in range(ge):
fname = filearray[i]
bk = xlrd.open_workbook(fname)
try:
sh = bk.sheet_by_name("sheet1")
except:
print("在文件%s中没有找到sheet1,读取文件数据失败,要不你换换表格的名字?" % fname)
nrows = sh.nrows
matrix[i] = [0] * (nrows - 1)
ncols = sh.ncols
for m in range(nrows - 1):
matrix[i][m] = ["0"] * ncols
for j in range(1, nrows):
for k in range(0, ncols):
matrix[i][j - 1][k] = sh.cell(j, k).value
# 下面是写数据到新的表格(人行当日开销户汇总.xlsx)中
filename = xlwt.Workbook()
sheet = filename.add_sheet("人行当日开销户汇总")
# 下面是把表头写上
for i in range(0, len(biaotou)):
sheet.write(0, i, biaotou[i])
# 求和前面的文件一共写了多少行
zh = 1
for i in range(ge):
for j in range(len(matrix[i])):
for k in range(len(matrix[i][j])):
sheet.write(zh, k, matrix[i][j][k])
zh = zh + 1
print("我已经将%d个文件合并成1个文件,并命名为%s.xlsx 快打开看看正确不?" % (ge, file))
filename.save("C:\\Users\\54520\\Desktop\\表格拼接\\" + file + ".xls")
def main():
#csv_to_excel()
excel_merge()
main()
以上代码在套用的时候我们需要改的有 biaotou 变量,filelocation,file,以上如有不明之处欢迎回帖!