一般用两种格式的数据写入,不多说放上demo。
1、列表形式写入
import xlwt def data_write(file_path, datas): f = xlwt.Workbook() sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet title = [] #加入表头 datas.insert(0, title) #写入表头 style = xlwt.XFStyle() #创建样式 align = xlwt.Alignment() #创建对齐方式 align.horz = 1 #1-->左对齐,2-->居中,3-->右对齐 style.alignment = align #将数据写入第 i 行,第 j 列 i = 0 for data in datas: for j in range(len(data)): sheet1.write(i,j,data[j],style=style) i = i + 1 f.save(file_path) #保存文件
2、字典形式写入
def dict_write_excel(html1): data_list = [] # 循环得到每一个data for data in html1: # 循环得到data字典里的所有键值对的值 for value in data.values(): # 将得到的值放入空列表中 data_list.append(value) # 创建一个新的列表生成式并赋给一个变量new_list. # 这个列表生成式主要是将数据每8个为一个新的元素存入新的列表中,即列表套列表 new_list = [data_list[i:i + 8] for i in range(0, len(data_list), 8)] # 生成一个xlwt.Workbook对象 xls = xlwt.Workbook() # 调用对象的add_sheet方法 sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True) # 创建我们需要的第一行的标头数据 heads = ['one', 'two', 'three', 'four', 'five', 'six', 'seven','eight'] ls = 0 # 将标头循环写入表中 for head in heads: sheet.write(0, ls, head) ls += 1 i = 1 # 将数据分两次循环写入表中 外围循环行 for list in new_list: j = 0 # 内围循环列 for data in list: sheet.write(i, j, data) j += 1 i += 1 # 最后将文件save保存 xls.save('案例.xls')
小案例:
import xlwt def write_excel(file_path, datas): f = xlwt.Workbook() sheet1 = f.add_sheet(u"年龄", cell_overwrite_ok=True) title = ["xxx", "XXX"] title1 = ["trade", "<18", "25-29", "18-24", "35-39", "30-34", "45-49", "40-44", ">50"] datas.insert(0, title1) # 写入表头 datas.insert(0, title) # 将数据写入第 i 行,第 j 列 style = xlwt.XFStyle() align = xlwt.Alignment() align.horz = 1 style.alignment = align i = 0 for data in datas: for j in range(len(data)): sheet1.write(i, j, data[j], style=style) i = i + 1 f.save(file_path) # 保存文件 if __name__ == "__main__": datas = [["电竞", 1, 2, 3, 4, 5, 6, 7, 8], ["电商", 1, 2, 3, 4, 5, 6, 7, 8]] write_excel("/Users/leisunny/Desktop/mysite/practice/demo.xls", datas)
注意:xlwt包只能出来xls格式的Excel文件,xlsx格式的需要用pandas或openpyxl包