xlwt介紹和安裝
xlwt
是Python中操作Excel的一個庫扇救,可以將數(shù)據(jù)保存成Excel
API Reference:https://xlwt.readthedocs.io/en/latest/api.html#xlwt.Style.easyxf
PyPI:https://pypi.org/project/xlwt-fix/
pip install xlwt
在保存之前统刮,可以設(shè)置單元格的屬性,官網(wǎng)提供了以下6種設(shè)置。
Group | Attributes |
---|---|
Number format | Number format index (index to FORMAT record) |
Font | Font index (index to FONT record) |
Alignment | Horizontal and vertical alignment, text wrap, indentation, orientation/rotation, text direction |
Border | Border line styles and colours |
Background | Background area style and colours |
Protection | Cell locked, formula hidden |
此文介紹其中4種:
- Font:字體設(shè)置
- Alignment:對準(zhǔn)設(shè)置
- Border:邊框設(shè)置
- Background:背景設(shè)置
文中所有代碼鏈接:https://github.com/yangyang0126/PythonLearning/tree/master/Python實踐/數(shù)據(jù)可視化/xlwt
創(chuàng)建表格
創(chuàng)建一個表格的流程
- 定義workbook
- 添加sheet
- 創(chuàng)建一個樣式對象style柒昏,設(shè)置格式(這一步可以省略,出來就是默認(rèn)格式)
- 給表格賦值
- 保存表格
我們首先創(chuàng)建一個最簡單的表格,不做任何格式漏设,內(nèi)容就是從0-71的數(shù)字。
import xlwt
# 定義workbook
workbook = xlwt.Workbook()
# 添加sheet今妄,這個sheet的名字叫'Style'
sheet = workbook.add_sheet('Style')
# 寫入數(shù)據(jù)
row = 0 # 行
column = 0 # 列
for i in range(72):
sheet.write(row, column, i) # 寫入數(shù)據(jù)郑口,第row行鸳碧,第column列,具體內(nèi)容是i
column += 1
if column > 8:
column = 0
row += 1
# 定義保存Excel的位置和文件名犬性。默認(rèn)是和代碼存在一個路勁下面瞻离。
workbook.save('CreatExcelTable.xls')
此時運行代碼,生成的文件如下所示
能生成一個表格之后乒裆,我們開始來設(shè)置格式套利,包括設(shè)置字體、居中缸兔、邊框和背景日裙。
設(shè)置格式
1、設(shè)置單元格背景
先說設(shè)置單元格背景惰蜜,因為背景設(shè)置主要是顏色的設(shè)置昂拂。這個顏色的識別,是通用的抛猖。
我們在設(shè)置字體格侯、單元格填充時,會進(jìn)行顏色的設(shè)置财著。比如將字體設(shè)置成紅色联四,將單元格設(shè)置成黃色。在xlwt
設(shè)置中撑教,每一個顏色朝墩,都由相對應(yīng)的數(shù)字表示。具體參照下圖伟姐,給大家分別展示了收苏,當(dāng)字體是白色或者黑色時,單元格顏色的顯示效果愤兵。
設(shè)置表格格式秆乳,我們首先要先定義一個樣式
# 創(chuàng)建一個樣式對象懦鼠,初始化樣式 style
style = xlwt.XFStyle()
接著進(jìn)行背景設(shè)置
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 4 # 給背景顏色賦值
- 根據(jù)上圖可知,
0
代表黑色
屹堰,1
代表白色
肛冶,2
代表紅色
,以此類推扯键。后續(xù)所有涉及顏色的操作淑趾,都以此數(shù)字代表。 - 顏色參照上面的規(guī)則忧陪,比如扣泊,4近范,對應(yīng)的是,深藍(lán)色
設(shè)置好之后延蟹,把這個背景评矩,應(yīng)用到剛剛的 style
上面去
style.pattern = pattern # 把背景顏色加到表格樣式里去
最后,在賦值的時候阱飘,把格式帶上
sheet.write(row, column, i) # 不帶格式
sheet.write(row, column, i, style) # 有格式
2斥杜、設(shè)置字體格式
與上述一致,我們先要先定義一個樣式
# 創(chuàng)建一個樣式對象沥匈,初始化樣式 style
style = xlwt.XFStyle()
接著進(jìn)行字體設(shè)置
# 為樣式創(chuàng)建字體
font = xlwt.Font()
font.name = 'Calibri' # 設(shè)置字體
font.colour_index = 4 # 設(shè)置字體顏色
font.height = 400 # 字體大小
- 字體大家可以任選蔗喂,和Excel里面字體的名字匹配就可以
- 顏色參照上面的規(guī)則,比如高帖,4缰儿,對應(yīng)的是,深藍(lán)色
- 字體大小也看大家心情啦
設(shè)置好之后散址,把這個字體乖阵,應(yīng)用到剛剛的 style
上面去
style.font = font
最后,在賦值的時候预麸,把格式帶上
sheet.write(row, column, i) # 不帶格式
sheet.write(row, column, i, style) # 有格式
完整代碼
import xlwt
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('Font')
# 創(chuàng)建一個樣式對象瞪浸,初始化樣式 style
style = xlwt.XFStyle()
# 為樣式創(chuàng)建字體
font = xlwt.Font()
font.name = 'Calibri' # 設(shè)置字體
font.colour_index = 4 # 設(shè)置字體顏色
font.height = 400 # 字體大小
# 定義格式-字體
style.font = font
# 寫入數(shù)據(jù)
row = 0 # 行
column = 0 # 列
for i in range(72):
sheet.write(row, column, i, style) # 增加樣式
if column > 8:
column = 0
row += 1
workbook.save('Font.xls')
此時效果如下圖所示,字體是Calibri
吏祸,顏色是藍(lán)色
对蒲,字體大小是400
我們對字體進(jìn)行進(jìn)一步設(shè)置,設(shè)置粗體贡翘、斜體蹈矮、下劃線等
font.name = 'Times New Roman' # 設(shè)置字體
font.color_index = color # 設(shè)置字體顏色
font.height = 400 # 字體大小
font.bold = True # 字體是否為粗體
font.italic = True # 字體是否為斜體
font.underline = True # 字體是否有下劃線
font.struck_out =True # 字體中是否有橫線
我們來看一下粗體、斜體和下劃線的效果床估。下劃線的顏色和粗細(xì),是隨著字體走的诱渤。字體粗體丐巫,下劃線也是粗體。
下面是橫線效果
3勺美、位置設(shè)置
目前我只會設(shè)置水平位置
有些文章說递胧,通過al.vert
可以設(shè)置垂直位置,我嘗試了沒效果
后續(xù)如果學(xué)會了赡茸,再來更新
alignment = xlwt.Alignment()
alignment .horz = 1 # 設(shè)置水平位置缎脾,0是左對齊,1是居中占卧,2是右對齊
# 設(shè)置自動換行
alignment.wrap = 1
style.alignment = alignment
4遗菠、邊框設(shè)置
# 設(shè)置邊框
borders = xlwt.Borders() # Create Borders
# DASHED虛線
# NO_LINE沒有
# THIN實線
borders.left = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
borders.left_colour = color
borders.right_colour = color
borders.top_colour = color
borders.bottom_colour = color
style.borders = borders
邊框顏色隨意联喘,這個不多說了。講一下邊框的線條辙纬。
有兩種定義方式豁遭,一種是用DASHED、THIN來表示
# DASHED虛線
# NO_LINE沒有
# THIN實線
borders.left = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
效果如下
還有一種贺拣,可以直接用數(shù)字表示
# 細(xì)實線:1蓖谢,小粗實線:2,細(xì)虛線:3譬涡,中細(xì)虛線:4闪幽,大粗實線:5,雙線:6涡匀,細(xì)點虛線:7
# 大粗虛線:8盯腌,細(xì)點劃線:9,粗點劃線:10渊跋,細(xì)雙點劃線:11腊嗡,粗雙點劃線:12,斜點劃線:13
borders.left = 1
borders.right = 2
borders.top = 3
borders.bottom = 4
這邊展示了拾酝,不同數(shù)字對應(yīng)的邊框樣式
最后
目前關(guān)于xlwt的學(xué)習(xí)燕少,就差不多這樣。后續(xù)學(xué)了更多東西蒿囤,再來補充~~