一般用兩種格式的數據寫入,不多說放上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包
