Python实现多个excel文件合并源码及打包exe程序

##以下是源码filecombine.py,比较简单,有相应说明,也是结合别的代码自己修改的,用到的包需要提前装好。

# -*- coding: utf-8 -*-

import xlrd
import xlwt
import os
import datetime

#打开一个excel文件
def open_xls(file):
fh=xlrd.open_workbook(file)
return fh

#获取excel中所有的sheet表
def getsheet(fh):
return fh.sheets()

#读取文件内容并返回行内容
def getFilect(file,shnum):
fh = open_xls(file)
table = fh.sheets()[shnum]
num = table.nrows
for row in range(num):
rdata = table.row_values(row)
datavalue.append(rdata)
return datavalue

#获取sheet表的行数
def getnrows(fh,sheet):
table=fh.sheets()[sheet]
return table.nrows

#读取sheet表的个数
def getshnum(fh):
x=0
sh=getsheet(fh)
for sheet in sh:
x += 1
return x

if __name__==’__main__’:
# print(“main”)
rootdir = ‘E:/combinefiles/’
filelist = os.listdir(rootdir) #列出文件夹下所有的目录和文件
#定义要合并的excel文件列表
allxls=[]
# allxls=[‘E:/a.xls’,‘E:/b.xls’]
print(‘Your files:\r’)
for i in range(0,len(filelist)):
path = os.path.join(rootdir,filelist[i])
if os.path.isfile(path):
if path.endswith(’.xls’) or path.endswith(’.xlsx’):
print(’ --’+path)
# if ‘new.xls’ in path:
# print(’ the new.xls already exist, please delete new.xls first!’)
# exit(-1)
allxls.append(path)
# print(allxls)
#存储所有读取的结果
datavalue=[]
for fl in allxls:
fh = open_xls(fl)
x = getshnum(fh)
for shnum in range(x):
print(“reading: “+str(fl)+”'s sheet”+str(shnum+1)+" …")
rvalue = getFilect(fl,shnum)
#定义最终合并后生成的新文件
wb1 = xlwt.Workbook(encoding=‘utf-8’)
#创建一个sheet工作对象
ws = wb1.add_sheet(“sheet1”)
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c = rvalue[a][b]
ws.write(a,b,c)
nowTime = datetime.datetime.now().strftime(’%Y%m%d%H%M%S’)
newfileName =‘E:/combinefiles/new-’ + nowTime + ‘.xls’
wb1.save(newfileName)
print(“files combine complete!\n”)
raw_input("####please Enter to quit…###### ")

使用pyinstaller打包成exe:
通过pip install pyinstaller安装pyinstaller包
到filecombine.py 所在目录执行以下 命令打包exe,打包后的exe包括了依赖包,可以跨机器使用。
pyinstaller --onefile --nowindowed filecombine.py
执行结果
Python实现多个excel文件合并源码及打包exe程序_第1张图片
通过红框里的路径,可以找到生成 的exe, 双击执行即可。But,but!!!双击前请仔细阅读下面内容:
1.本工具用于完成多个excel文件合并
2.使用前请在E盘创建目前E:\combinefiles目录(程序里写死了,别问为什么写死,这只是个基础实现,完全可以做成可配路径的方式)
3.将需要合并的excel文件复制到E:\combinefiles目录中
4.双击filecombine.exe自动合并文档
5.完成后点击Enter退出即可

#######注意#############
重复使用本工具时,请将E:\combinefiles目录清空后再使用,否则原有文件也会被合并。

你可能感兴趣的:(小工具)