亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Python 操作 Excle 數據表:數據寫入

上節課我們學習了使用 Python 的 xlrd 模塊對 Excel 表格進行數據讀取,但是我們在平時的工作過程中,除了對數據進行讀取操作外,還以后另外一項非常重要的內容就是數據的寫入。

向 Excel 中寫入數據的應用場景也是非常廣泛。如數據清洗后數據的存儲寫入或多個 Excel 數據合并新文件生成等等。既然有專門讀取數據的 xlrd 模塊,自然也有專門進行數據寫入的 xlwt 模塊。

本小節我們就來學習下 Python 第三方庫 xlwt 完成對 Excel 的寫入。

1. xlwt 模塊介紹

xlwt 是一個向 Excel 文件(.xls)寫入信息庫。支持 excel03 版到 excel2013 版,保存的格式只支持 xls 格式,07 以后的版本 xlsx 不支持。

通過本小節的學習,我們最終要完成工作簿 “2019-CNY.xls” 的創建,其中包含兩個工作表,分別為 “CNY” 與 “image”,兩個工作表中具體內容如下圖所示。
圖片描述

圖片描述

1.1 安裝

xlwt 是 Python 的第三方庫,使用前需要通過以下命令進行安裝:

pip install xlwt

1.2 使用步驟

步驟 1:導入 xlwt 模塊

通過 import xlwt 完成導入。

import xlwt

步驟 2:創建工作簿

import xlwt
wb = xlwt.Workbook()

步驟 3:創建工作表

import xlwt
wb = xlwt.Workbook() # 創建一個工作簿對象
ws = wb.add_sheet("sheet1") # 使用工作簿對象創建一個工作表,名稱為 sheet1

步驟 4:向工作表中寫入數據

根據 xlwt 提供的方法,完成工作表(sheet)中數據的寫入,以及包括樣式的設置等操作。

步驟 5:生成 Excel 文件

import xlwt
wb = xlwt.Workbook()
...省略部分代碼
wb.save("data.xls") # 保存并生成 Excel 文件

通過 save () 方法進行保存,生成 Excel 文件,save () 方法也可以傳入你想要保存到的文件路徑。到這里就完成了新的工作簿創建和數據寫入的操作。

2. xlwt 寫入 Excel

接下來,針對 xlwt 提供的常用寫入方法進行講解,這里根據寫入內容的類型進行劃分。

2.1 寫入文本

寫入文本常用方法,見下表。

屬性 描述
write(r, c, label, style) 將指定單元格寫入工作表
write_merge(r1, r2, c1, c2, label, style) 將指定合并單元格寫入工作表

具體方法使用,如下所示:

ws = wb.add_sheet("sheet1")
ws.write(3,0,"張三")

如何確定要填入的單元格位置呢?

工作表中的行和列索引均為從 0 開始,即行索引為 1,表示第 2 行,列索引為 2,表示第三列。起始位置從工作表中左上角位置。

通過上述代碼,可以得知在創建的 sheet 1 下,第 4 行第 1 列的位置寫入了 "張三"。

ws = wb.add_sheet("sheet1")
ws.write_merge(0, 1, 0, 5, "班級學員名單", titlestyle)

通過上述代碼,可以得知在創建的 sheet1 下,第 1 行,第 1-5 列做了單元格合并,里面填寫標題內容,且應用 titlestyle 樣式(關于樣式如何定義在下面小節中詳細說明)。

2.2 寫入圖片

寫入圖片常用方法,見下表。

方法 參數 描述
insert_bitmap(filename, row, col, x = 0, y = 0, scale_x = 1, scale_y = 1) 其中 filename 為文件名,row 為行索引,col 為列索引,x 為水平方向偏移位置,y 為垂直方向偏移位置,scale_x 與 scale_y 為縮放比例,默認 1,即按 1:1 行展示 在指定位置插入圖片

對應代碼中訪問,如下所示:

ws = wb.add_sheet("sheet1")
ws.insert_bitmap("user1.bmp", 0, 0)

通過上述代碼,可以得知在創建的 sheet1 下,第 1 行第 1 列的位置插入了 user1.bmp 圖片。

3. xlwt 格式設置

xlwt 除數據寫入外,還可以單元格格式設置和單元格樣式設置,一共分為 6 組,包括數字格式、字體、對齊方式、邊框、填充、保護。使用步驟如下:

步驟 1:初始化樣式

import xlwt
titlestyle = xlwt.XFStyle()  # 初始化 XFStyle 對象

步驟 2:配置樣式

根據提供的屬性進行單元格樣式設置,如字體、邊框、對齊方式設置等。

步驟 3:應用樣式

import xlwt
titlestyle = xlwt.XFStyle()  # 初始化XFStyle對象
...省略部分代碼
ws = wb.add_sheet("sheet1")
ws.write_merge(0, 1, 0, 5, "班級學員名單", titlestyle) #應用樣式

創建和配置好的 XFStyle 對象需要與寫入方法結合使用,如上述代碼中,將創建好的 titlestyle 應用到了標題上。

xlwt 中常用格式屬性分組,見下表。

分組 描述
Font 關于字體相關設置,如字號、字體、加粗等
Alignment 水平和垂直對齊,文本換行,縮進,方向 / 旋轉,文本方向
Borders 邊框線條樣式和顏色
Pattern 背景區域樣式和顏色

下面我們針對每一項的使用進行單獨介紹。

3.1 Font 字體

Font 字體中常用屬性,見下表。

屬性 描述
name 字體名稱
bold 字體是否 jiac
height 字號
colour_index 字體顏色

對應代碼中訪問,如下所示:

titlestyle = xlwt.XFStyle()  # 初始化樣式
titlefont = xlwt.Font()
titlefont.name = "宋體"
titlefont.bold = True  # 加粗
titlefont.height = 11*20  # 字號
titlefont.colour_index = 0x08  # 字體顏色
titlestyle.font = titlefont

使用時,首先通過 xlwt.Font 進行初始化,完成字體配置后,將對象賦值給 XFStyle。

Tips:上述代碼中顏色代碼不是 RGB 的六位顏色代碼,而是 xlwt 內部的一套代碼。具體可以參考 xlwt.Styles 中 _colour_map_text 的數據。

xlwt.Styles 中 _colour_map_text 的數據如下:

aqua 0x31             black 0x08             blue 0x0C
blue_gray 0x36        bright_green 0x0B      brown 0x3C
coral 0x1D            cyan_ega 0x0F          dark_blue 0x12
dark_blue_ega 0x12    dark_green 0x3A        dark_green_ega 0x11
dark_purple 0x1C      dark_red 0x10          dark_red_ega 0x10
dark_teal 0x38        dark_yellow 0x13       gold 0x33
gray_ega 0x17         gray25 0x16            gray40 0x37
gray50 0x17           gray80 0x3F            green 0x11
ice_blue 0x1F         indigo 0x3E            ivory 0x1A
lavender 0x2E         light_blue 0x30        light_green 0x2A
light_orange 0x34     light_turquoise 0x29   light_yellow 0x2B
lime 0x32             magenta_ega 0x0E       ocean_blue 0x1E
olive_ega 0x13        olive_green 0x3B       orange 0x35
pale_blue 0x2C        periwinkle 0x18        pink 0x0E
plum 0x3D             purple_ega 0x14        red 0x0A
rose 0x2D             sea_green 0x39         silver_ega 0x16
sky_blue 0x28         tan 0x2F               teal 0x15
teal_ega 0x15         turquoise 0x0F         violet 0x14
white 0x09            yellow 0x0D

3.2 Alignment 對齊方式

對齊方式常用屬性,見下表。

屬性 描述
horz 水平方向對齊
vert 垂直方向對齊

對應代碼中訪問,如下所示:

cellalign = xlwt.Alignment()
cellalign.horz = 0x02
cellalign.vert = 0x01
titlestyle.alignment = cellalign

使用時,首先通過 xlwt.Alignment 進行初始化,完成配置后,將對象賦值給 XFStyle。

水平方向對齊取值范圍:

  • 0x01 (左端對齊);
  • 0x02 (水平方向上居中對齊);
  • 0x03 (右端對齊);

垂直方向對齊取值范圍:

  • 0x00 (上端對齊);
  • 0x01 (垂直方向上居中對齊);
  • 0x02 (底端對齊)。

3.3 Borders 邊框

邊框樣式常用屬性,見下表。

屬性 描述
top 上邊框
right 右邊框
bottom 下邊框
let 左邊框

對應代碼中訪問,如下所示:

borders = xlwt.Borders()
borders.right = xlwt.Borders.DASHED #虛線
borders.bottom = xlwt.Borders.DOTTED #點線
titlestyle.borders = borders

使用時,首先通過 xlwt.Borders 進行初始化,完成邊框樣式配置后,將對象賦值給 XFStyle。上述代碼即設置單元格右側邊框為虛線,設置單元格下邊框為點線。

3.4 Pattern 填充

填充常用屬性,見下表。

屬性 描述
pattern 設置背景顏色的模式
pattern_fore_colour 背景顏色

對應代碼中訪問,如下所示:

datestyle = xlwt.XFStyle()
bgcolor = xlwt.Pattern()
bgcolor.pattern=xlwt.Pattern.SOLID_PATTERN
bgcolor.pattern_fore_colour=22 #背景顏色
datestyle.pattern=bgcolor

上述代碼中,首先通過 xlwt.Pattern 進行初始化,為單元格設置填充背景顏色樣式,其中 xlwt.Pattern 為填充背景顏色的模式,SOLID_PATTERN 表示完全填充。完成配置后,將對象賦值給 XFStyle。

4. 小結

本節課程我們主要學習了 xlwt 模塊的使用。本節課程的重點如下:

  • 了解 xlwt 模塊作用及使用步驟;
  • 掌握 xlwt 模塊中寫入文本、圖片的使用方法;
  • 掌握 xlwt 模塊中格式化單元格樣式常用屬性與方法。

圖片描述