#-*- encoding: utf-8 -*-
# 找出指定文件夹里的所有文件
import os
filePath = 'C:\\Users\\lzk\\Desktop\\H_totall_data\\data\\'
filearray=os.listdir(filePath)
print(filearray)
注:该方法是用xlwt来生成excel的,生成的后缀名为xls,当数据太多(>65536时)就会报错:ValueError: row index (65536)not an intinrange(65536)错误
原因是:在xlwt中生成的xls文件最多能支持65536行数据。
#-*- encoding: utf-8 -*-
#下面这些变量需要您根据自己的具体情况选择
biaotou=['告警等级', '省', '市', '区县', '站址名称', '站址运维ID', '告警来源', '告警名称', 'FSU名称', 'FSU厂家', '子设备名称', '告警详情', '告警发生时间', '告警清除时间', '告警历时', '设备告警开始时间', '设备告警结束时间', '设备名称', '告警类别', '告警对象类型', '告警原因', '告警摘要', '告警附加信息', '告警入库时间', '告警重复次数', '是否已确认', '确认时间', '确认原因', '用户备注信息', '是否已恢复', '是否转故障', '告警主键ID', '告警说明', '故障现象描述', '站址来源']
#在哪里搜索多个表格
filelocation="C:\\Users\\lzk\\Desktop\\alarm_map\\h_6th_month\\"
#当前文件夹下搜索的文件名后缀
fileform="xls"
#将合并后的表格存放到的位置
filedestination="C:\\Users\\lzk\\Desktop\\alarm_map\\h_6th_month\\"
#合并后的表格命名为file
file="h_6th_month_totall_data.xls"
#首先查找默认文件夹下有多少文档需要整合
import glob
from numpy import *
filearray = []
for filename in glob.glob(filelocation+'*.xls'):
filearray.append(filename)
#以上是从pythonscripts文件夹下读取所有excel表格,并将所有的名字存储到列表filearray
print("在默认文件夹下有%d个文档哦"%len(filearray))
ge=len(filearray)
matrix = [None]*ge
#实现读写数据
#下面是将所有文件读数据到三维列表cell[][][]中(不包含表头)
import xlrd
for i in range(ge):
fname=filearray[i]
bk=xlrd.open_workbook(fname)
try:
sh=bk.sheet_by_name("历史告警-导出")
except:
print ("在文件%s中没有找到'历史告警-导出',读取文件数据失败,要不你换换表格的名字?" %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
#下面是写数据到新的表格test.xls中哦
import xlwt
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.快打开看看正确不?"%(ge,file))
filename.save(filedestination+file)
#filename.save(file)
注:此方法是使用xlsxwriter这个模块,它生成的文件后缀名为.xlsx,最大能够支持1048576行数据,16384列数据。
#-*- encoding: utf-8 -*-
#下面这些变量需要您根据自己的具体情况选择
biaotou=['告警等级', '省', '市', '区县', '站址名称', '站址运维ID', '告警来源', '告警名称', 'FSU名称', 'FSU厂家', '子设备名称', '告警详情', '告警发生时间', '告警清除时间', '告警历时', '设备告警开始时间', '设备告警结束时间', '设备名称', '告警类别', '告警对象类型', '告警原因', '告警摘要', '告警附加信息', '告警入库时间', '告警重复次数', '是否已确认', '确认时间', '确认原因', '用户备注信息', '是否已恢复', '是否转故障', '告警主键ID', '告警说明', '故障现象描述', '站址来源']
#在哪里搜索多个表格
filelocation="C:\\Users\\lzk\\Desktop\\alarm_map\\h_6th_month\\"
#当前文件夹下搜索的文件名后缀
fileform="xls"
#将合并后的表格存放到的位置
filedestination="C:\\Users\\lzk\\Desktop\\alarm_map\\h_6th_month\\"
#合并后的表格命名为file
file="试验_h_5th_month_totall_data.xlsx"
#首先查找默认文件夹下有多少文档需要整合
import glob
from numpy import *
filearray = []
for filename in glob.glob(filelocation+'*.xls'):
filearray.append(filename)
#以上是从pythonscripts文件夹下读取所有excel表格,并将所有的名字存储到列表filearray
print("在默认文件夹下有%d个文档哦"%len(filearray))
ge=len(filearray)
matrix = [None]*ge
#实现读写数据
#下面是将所有文件读数据到三维列表cell[][][]中(不包含表头)
import xlrd
for i in range(ge):
fname=filearray[i]
bk=xlrd.open_workbook(fname)
try:
sh=bk.sheet_by_name("历史告警-导出")
except:
print ("在文件%s中没有找到'历史告警-导出',读取文件数据失败,要不你换换表格的名字?" %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
#下面是写数据到新的表格test.xls中哦
import xlsxwriter
workbook= xlsxwriter.Workbook(file)#创建一个excel文件
worksheet=workbook.add_worksheet("历史告警-导出") #在文件中创建一个名为"历史告警-导出"的sheet,不加名字默认为sheet1
#设置一个加粗的格式对象
bold= workbook.add_format({'bold':True})
#下面是把表头写上
for i in range(0,len(biaotou)):
worksheet.write(0,i,biaotou[i],bold)
#求和前面的文件一共写了多少行
zh=1
for i in range(ge):
for j in range(len(matrix[i])):
for k in range(len(matrix[i][j])):
worksheet.write(zh,k,matrix[i][j][k])
zh=zh+1
print("我已经将%d个文件合并成1个文件,并命名为%s快打开看看正确不?"%(ge,file))
workbook.close()