#execle写入模块
import xlwt
class WriteExecle():
def __init__(self,sheet_name,filename,header_data,data):
'''
:param sheet_name: sheet表单名称
:param filename: 存放execle文件绝对路径
:param header_data: 写入的列表头字段数据
:param data: 写入的数据
'''
self.sheet_name =sheet_name
self.filename =filename
self.header_data =header_data
self.data =data
def write_execle(self):
workbook = xlwt.Workbook() #激活worksheet
#worksheet = workbook.add_sheet(self.sheet_name) # 数据可以直接分配到单元格中
worksheet = workbook.add_sheet(self.sheet_name)
for i in range(len(self.header_data)):
ret = self.header_data[i][0]
worksheet.write(0,i,ret)
contenRow = len(self.data)
first_col = []
for i in range(contenRow):
first_col.append(self.data[i][0])
nfirst_col = list(set(first_col))
nfirst_col.sort(key=first_col.index) # sort排序与原顺序一致
#print("nfirst_col",nfirst_col)
row = 1
for i in nfirst_col:
count = first_col.count(i) # 计算元素的重复个数,比如测试 :3
uprange = row+count-1 #合并范围后的上行数
worksheet.write_merge(row,uprange,0,0,i) #合并单元格写入内容
row = uprange+1 #从下一行开始写入
#获取content子列表第二个元素,循环写入excel第2列到最后开始的数据
for row in range(contenRow):
for col in range(1,len(self.data[row])):
worksheet.write(row+1,col,self.data[row][col])
try:
workbook.save(self.filename)
print("数据总量:{0}被写入{1}".format(contenRow, self.filename))
except:
print('\033[1;35m 执行失败:{}文件已打开,请关闭 \033[0m!'.format(self.filename))