一般用两种格式的数据写入,不多说放上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包
