1. 程式人生 > >python寫入資料到excel中

python寫入資料到excel中

寫入資料到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()