python寫入資料到excel中
阿新 • • 發佈:2018-11-29
寫入資料到excel表格中,需要先import xlwt庫,pip install xlwt安裝。
1.直接寫入資料到excel中
def write_file():
book = xlwt.Workbook(encoding='utf-8') #建立Workbook,相當於建立Excel
# 建立sheet,Sheet1為表的名字,cell_overwrite_ok為是否覆蓋單元格
sheet1 = book.add_sheet(u'Sheet1', cell_overwrite_ok=True)
#向表中新增資料
sheet1.write(0 , 0, 'Englishname') #第0行第0列
sheet1.write(1, 0, 'Hellen') #第一行第0列
sheet1.write(0, 1, '中文名字')
sheet1.write(1, 1, '海倫')
excel中寫入的資料:
2.寫入字典型別的資料
def write_file():
book = xlwt.Workbook(encoding='utf-8') #建立Workbook,相當於建立Excel
# 建立sheet,Sheet1為表的名字,cell_overwrite_ok為是否覆蓋單元格
sheet1 = book.add_sheet(u'Sheet1' , cell_overwrite_ok=True)
data = {
"序號": ["姓名", "語文", "數學", "英語"],
"1": ["張三", 130, 120, 100],
"2": ["李四", 100, 110, 120],
"3": ["王五", 125, 135, 135]
}
r = 0
for i, j in data.items(): # i表示data中的key,j表示data中的value
le = len(j) # values返回的列表長度
if r == 0:
sheet1.write(r, 0, i, set_style('Arial', 220, True)) #新增第 0 行 0 列資料單元格背景設為黃色
else:
sheet1.write(r, 0, i, ) # 新增第 1 列的資料
for c in range(1, le + 1): #values列表中索引
if r == 0:
sheet1.write(r, c, j[c - 1], set_style('Arial', 220, True)) #新增第 0 行,2 列到第 5 列的資料單元格背景設為黃色
else:
sheet1.write(r, c, j[c - 1])
r += 1 # 行數
#sheet_merge() 合併單元格
book.save('D:\\write.xlsx')
excel中寫入的資料:
3.設定字型樣式、單元格樣式
1)設定之前,需要先初始化樣式
style = xlwt.XFStyle() #初始化樣式
2)設定字型大小、顏色
font = xlwt.Font() #建立字型, Font定義字型的大小、顏色
font.name = name #字型名稱
font.bold = bold #粗體
# font.italic = True #斜體
font.height = height #字型大小
# font.colour_index = 4 # 字型顏色
3)設定單元格邊框線
borders = xlwt.Borders() #單元格邊框線
borders.left = xlwt.Borders.THIN #設定邊框線粗細
borders.right = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
# borders.right_colour = 1 #設定邊框線顏色
# borders.left_colour = 1
# borders.top_colour = 1
# borders.bottom_colour = 1
4)設定字型在單元格中的位置
alignment = xlwt.Alignment() #設定字型在單元格中的位置
alignment.horz = xlwt.Alignment.HORZ_CENTER #水平居左
alignment.vert = xlwt.Alignment.VERT_CENTER #垂直居中
5)設定單元格背景顏色
pat = xlwt.Pattern() #設定單元格背景顏色
pat.pattern = xlwt.Pattern.SOLID_PATTERN
pat.pattern_fore_colour = 5 #黃色
6)設定完後,需要重新賦值:
style.font = font
style.borders = borders
style.alignment = alignment
style.pattern = pat
XFStyle類中,建立了對應的樣式的物件,如下:
7)在write_file()中,呼叫設定方法如下:
sheet1.write(r, 0, i, set_style('Arial', 220, True)) #新增第 0 行 0 列資料單元格背景設為黃色
r 為行,0 為第0 列,i為新增的資料,set_style為對字型和單元格的設定。
4.完整的程式碼如下:
import xlwt
def write_file():
book = xlwt.Workbook(encoding='utf-8') #建立Workbook,相當於建立Excel
# 建立sheet,Sheet1為表的名字,cell_overwrite_ok為是否覆蓋單元格
sheet1 = book.add_sheet(u'Sheet1', cell_overwrite_ok=True)
# #向表中新增資料
# sheet1.write(0, 0, 'Englishname')
# sheet1.write(1, 0, 'Hellen')
# sheet1.write(0, 1, '中文名字')
# sheet1.write(1, 1, '海倫')
data = {
"序號": ["姓名", "語文", "數學", "英語"],
"1": ["張三", 130, 120, 100],
"2": ["李四", 100, 110, 120],
"3": ["王五", 125, 135, 135]
}
r = 0
for i, j in data.items(): # i表示data中的key,j表示data中的value
le = len(j) # values返回的列表長度
if r == 0:
sheet1.write(r, 0, i, set_style('Arial', 220, True)) #新增第 0 行 0 列資料單元格背景設為黃色
else:
sheet1.write(r, 0, i, ) # 新增第 1 列的資料
for c in range(1, le + 1): #values列表中索引
if r == 0:
sheet1.write(r, c, j[c - 1], set_style('Arial', 220, True)) #新增第 0 行,2 列到第 5 列的資料單元格背景設為黃色
else:
sheet1.write(r, c, j[c - 1])
r += 1 # 行數
#sheet_merge() 合併單元格
book.save('D:\\write.xlsx')
def set_style(name, height, bold = False):
style = xlwt.XFStyle() #初始化樣式
font = xlwt.Font() #建立字型, Font定義字型的大小、顏色
font.name = name #字型名稱
font.bold = bold #粗體
# font.italic = True #斜體
font.height = height #字型大小
# font.colour_index = 4 # 字型顏色
borders = xlwt.Borders() #單元格邊框線
borders.left = xlwt.Borders.THIN #設定邊框線粗細
borders.right = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
# borders.right_colour = 1 #設定邊框線顏色
# borders.left_colour = 1
# borders.top_colour = 1
# borders.bottom_colour = 1
alignment = xlwt.Alignment() #設定字型在單元格中的位置
alignment.horz = xlwt.Alignment.HORZ_CENTER #水平居左
alignment.vert = xlwt.Alignment.VERT_CENTER #垂直居中
pat = xlwt.Pattern() #設定單元格背景顏色
pat.pattern = xlwt.Pattern.SOLID_PATTERN
pat.pattern_fore_colour = 5 #黃色
style.font = font
style.borders = borders
style.alignment = alignment
style.pattern = pat
return style
if __name__ == '__main__':
write_file()