Python批量快速合并excel文件
如果有很多excel文件需要合并到一个Excel文件中,使用复制粘贴来操作是非常痛苦,这时可以使用Python来批量自动操作。把需要合并的Excel文件放到同一文件夹下。如在如下路径下,将文件1和2合并成merge文件需要安装的库pip3 install xlrdpip3 install xlsxwriter代码#!/usr/bin/env python# -*- coding: utf-8 -*
·
如果有很多excel文件需要合并到一个Excel文件中,使用复制粘贴来操作是非常痛苦,这时可以使用Python来批量自动操作。
把需要合并的Excel文件放到同一文件夹下。如在如下路径下,将文件1和2合并成merge文件
需要安装的库
pip3 install xlrd
pip3 install xlsxwriter
代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import xlrd
import xlsxwriter
import os
path = "C:/Users/Dejan/Desktop/MY/"
def get_allxls(): # 获取excel文件列表
all_xls = []
for f in os.listdir(path):
f_name = path + f
all_xls.append(f_name)
return all_xls
def open_xls(file): # 打开一个excel
#file = file.decode("utf-8")
fh = xlrd.open_workbook(file)
return fh
def getsheet(fh): # 获取excel表中的所有sheet
return fh.sheets()
def getnrows(fh, sheet): # 获取sheet表中的行数
table = fh.sheets()[sheet]
return table.nrows
def getFilect(file, shnum): # 读取文件内容并返回内容
fh = open_xls(file)
table = fh.sheets()[shnum]
num = table.nrows
for row in range(1,num):
rdata = table.row_values(row)
datavalue.append(rdata)
return datavalue
def getshnum(fh): # 获取sheet表的个数
x = 0
sh = getsheet(fh)
for sheet in sh:
x += 1
return x
if __name__ == '__main__':
allxls = get_allxls() # 定义要合并的excel文件列表
datavalue = []
for fl in allxls: # 存储所有读取的结果
print(fl)
fh = open_xls(fl)
x = getshnum(fh)
for shnum in range(x):
print("正在读取文件:" + str(fl) + "的第" + str(shnum) + "个sheet表的内容...")
rvalue = getFilect(fl, shnum)
endfile = "C:/Users/Dejan/Desktop/MY/merge.xls" # 合并后的文件
wb1 = xlsxwriter.Workbook(endfile)
ws = wb1.add_worksheet()
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c = rvalue[a][b]
ws.write(a, b, c)
wb1.close()
print("excel合并完成")
更多推荐
已为社区贡献1条内容
所有评论(0)