#导入模块xlrd:数据读取,xlwt:数据写入
import xlrd,xlwt
#导入系统模块,为了进行文件路径查找
import os
#目标文件与路径
targetPath=os.path.join(os.getcwd(),'05.表格合并/输出.xls')
# 目标文件的写入索引,目标文件从第几行开始写入数据
targetRowNum=5
#要合并文件路径
allPath=os.path.join(os.getcwd(),'05.表格合并/原始')
#获取文件夹下所有EXCEL名
xlsx_names = [x for x in os.listdir(allPath) if x.endswith(".xls")]
#设置每个文件下共有几个活动Sheet表
workSheet=1
#往目标文件中写入数据
target_file=xlwt.Workbook(encoding='utf-8')
#目标文件创建新的Sheet,这里需要说明,试用方法只能创建新的sheet,不能用原有的sheet表通过读取sheet名称进行写入
target_sheet = target_file.add_sheet('合并')
#循环读取每个文件
for single_file in xlsx_names:
#通过 *** 作系统文件目录的合并,查找到需要读取文件的路径+名称
filePath =os.path.join(allPath,single_file)
#打开文件夹下
first_file_fh=xlrd.open_workbook(filePath)
#循环遍历每个活动的工作Sheet表格
for tableSheet in range(workSheet):
first_table = first_file_fh.sheets()[tableSheet]
#获取表格的最大行数
first_table_maxrow=first_table.nrows
# 从第几行开始进行读取数据
for rowNum in range(4,first_table_maxrow):
#读取数据最终结果是一个数组,可以对数组进行处理
rowContent = first_table.row_values(rowNum)
#这个根据数据格式的不同,测试数据最后有合并行,这些数据不做处理,所以做了判断
if rowContent[3]=='' and rowContent[4]=='':
break
#根据数组的索引和值,将数据进行春促
for (info_index,info_value) in enumerate(rowContent):
#每条数组存储一行,write(行,列,值)
target_sheet.write(targetRowNum,info_index,info_value)
# 让目标文件行数添加
targetRowNum+=1
#每次执行完一个文件释放资源
first_file_fh.release_resources()
#删除每次执行完后的文件对象
del first_file_fh
#最终将合并文件进行保存
target_file.save(targetPath)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)