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