python中openpyxl庫(kù)設(shè)置表格樣式之字體/邊框/對(duì)齊/顏色等
本章節(jié)主要介紹如何使用openpyxl庫(kù)設(shè)置表格中的一些樣式,比如字體,邊框,對(duì)齊方式,單元格格式,行高和列寬等。
1 安裝和使用openpyxl庫(kù)設(shè)置表格樣式
執(zhí)行pip命令安裝openpyx庫(kù):
pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple/
目前最新版本3.1.5,安裝后在styles目錄下有多個(gè)模塊

在styles目錄的文件__init__.py中導(dǎo)入了一些常用的類。
- Color類: 設(shè)置顏色
- Font類: 設(shè)置字體
- Alignment類:設(shè)置示對(duì)齊方式
- Border和Side:設(shè)置邊框樣式
- PatternFill:填充單元格顏色
2 設(shè)置字體font
我們先導(dǎo)入Font類:
from openpyxl.styles import Font
Font類初始化函數(shù)如下:

一些常用參數(shù)具體解釋如下:
name | 設(shè)置字體名稱。比如"Arial","Times New Roman","微軟雅黑",‘宋體’,‘仿宋’等 |
sz或者size | 字體大小,比如數(shù)字11 |
i或者italic | 是否設(shè)置斜體。 |
strike | 是否設(shè)置刪除線。 |
outline | 是否設(shè)置輪廓 |
shadow | 是否設(shè)置陰影 |
colour | 字體顏色 |
b或者bold | 是否設(shè)置加粗 |
underline | 是否設(shè)置下劃線 |
family | 設(shè)置字體集。 |
charset | 設(shè)置字符集 |
其中字體的顏色需要用到類openpyxl.colors.Color類

對(duì)應(yīng)的一些color信息在colors.py文件最上方的元組COLOR_INDEX中有預(yù)置的顏色數(shù)據(jù)

黑色BLACK為第1個(gè)元素,白色WHITE為第2個(gè)元素,紅色RED為第3個(gè)元素等
所以顏色對(duì)象可設(shè)置為:
from openpyxl.styles import colors #顏色設(shè)置為紅色 color_ins = colors.Color(index=2)
關(guān)于顏色的說(shuō)明,參考文章最末尾。
在單元格上設(shè)置字體,完整代碼如下:
from openpyxl.styles import Font,colors
from openpyxl import Workbook
wb = Workbook()
#先創(chuàng)建1個(gè)sheet對(duì)象
sheet0 = wb.create_sheet('sheet0',0)
#單元格設(shè)置內(nèi)容
cell0 = sheet0.cell(1,1,'hello python')
#設(shè)置字體對(duì)象 顏色為紅色
font_ins = Font(name="微軟雅黑", sz=18, family=2, b=True, i=True,
color=colors.Color(index=2), scheme="minor")
#將字體對(duì)象賦予單元格
cell0.font = font_ins
#保存文件
wb.save('1.xlsx') #保存文件結(jié)果如下:

3 設(shè)置邊框
跟設(shè)置字體一樣,我們先導(dǎo)入Border類和Side類:
from openpyxl.styles import Border,Side
Border類初始化函數(shù)如下:

初始化函數(shù)的常用參數(shù)解釋如下:
left | 設(shè)置左邊框,為一個(gè)Side對(duì)象,可以指定邊框的樣式(如細(xì)線、粗線等)和顏色。 |
right | 設(shè)置右邊框,同上 |
top | 設(shè)置上邊框,同上 |
bottom | 設(shè)置下邊框,同上 |
diagonal | 設(shè)置對(duì)角線樣式,同上 |
diagonalUp | 設(shè)置對(duì)角線的方向,表示從右上到左下。 |
diagonalDown | 設(shè)置對(duì)角線的方向,表示從左上到右下。 |
而Side類同Border類在同一模塊文件中:

由于Border類的各個(gè)邊框?qū)傩裕╨eft、right、top、bottom等)都是Side對(duì)象,因此了解Side類的屬性也很重要:
- style:指定邊框的樣式。可選值如下:
"thin":細(xì)線;"medium":中等粗細(xì)線;"thick":粗線
"double":雙線;"hair":細(xì)線;"dotted":點(diǎn)線
"dashDot":點(diǎn)劃線;"dashDotDot":雙點(diǎn)劃線;"dashed":虛線
"dashDotDot":雙點(diǎn)劃線;"mediumDashDot":中等點(diǎn)劃線
"mediumDashed":中等虛線;"mediumDashDotDot":中等雙點(diǎn)劃線
"slantDashDot":斜線點(diǎn)劃線
- color:設(shè)置邊框的顏色??梢允褂妙伾Q的字符串。
測(cè)試代碼如下:
from openpyxl import Workbook
from openpyxl.styles import Border, Side
# 創(chuàng)建一個(gè)新的工作簿和工作表
wb = Workbook()
sheet0 = wb.active
# 創(chuàng)建一個(gè)Border對(duì)象并設(shè)置其屬性
border = Border(
left=Side(style='thick', color='FF0000'), # 左邊框:粗線,紅色
right=Side(style='thin', color='FF0000'), # 右邊框:細(xì)線,紅色色
top=Side(style='double', color='FF0000'), # 頂部邊框:雙線,紅色
bottom=Side(style='medium', color='FF0000') # 底部邊框:粗線,紅色
diagonal=Side(style='medium', color='000000'),# 對(duì)角線:粗線,黑色
diagonalDown=True #對(duì)角線,左上到右下
)
# 將Border對(duì)象應(yīng)用到單元格的邊框?qū)傩陨?
sheet0 ['A1'].border = border
# 也可以為特定區(qū)域設(shè)置邊框
for row in sheet0 ['A1:C3']:
for cell in row:
cell.border = border
# 保存工作簿
wb.save("2.xlsx")結(jié)果:

4 設(shè)置對(duì)齊方式
跟設(shè)置字體一樣,我們先導(dǎo)入Alignment類
from openpyxl.styles import Alignment
Alignment類初始化函數(shù)如下:

主要屬性具體解釋如下:
horizontal | 設(shè)置水平對(duì)齊方式 ‘general’(默認(rèn)): 一般對(duì)齊 ‘left’:左對(duì)齊 ‘center’:居中對(duì)齊 ‘right’:右對(duì)齊 ‘fill’:填充對(duì)齊 ‘justify’:兩端對(duì)齊 ‘centerContinuous’:連續(xù)居中對(duì)齊 ‘distributed’:分散對(duì)齊 |
vertical | 設(shè)置垂直對(duì)齊方式 ‘top’:頂部對(duì)齊 ‘center’:居中對(duì)齊 ‘bottom’:底部對(duì)齊 ‘justify’:兩端對(duì)齊 ‘distributed’:分散對(duì)齊 |
shrinkToFit | 如果為True,當(dāng)文本過(guò)長(zhǎng)時(shí),將縮小字體以適應(yīng)單元格寬度;默認(rèn)為False。 |
textRotation或者text_rotation | 設(shè)置字體旋轉(zhuǎn)方向,數(shù)值為0-180之間的數(shù)字 |
indent | 文本縮進(jìn)級(jí)別,整數(shù)值,默認(rèn)為0。 |
wrapText或者wrap_text | 是否設(shè)置自動(dòng)換行 |
測(cè)試代碼:
from openpyxl import Workbook
from openpyxl.styles import Alignment
# 創(chuàng)建一個(gè)新的工作簿和工作表
wb = Workbook()
ws = wb.active
# 創(chuàng)建一個(gè)對(duì)齊對(duì)象并設(shè)置屬性
alignment = Alignment(horizontal='center', vertical='center', wrap_text=True, indent=1, text_rotation=20)
# 設(shè)置一個(gè)單元格對(duì)象并應(yīng)用對(duì)齊方式的對(duì)象
ws['A1'] = "Hello Pyhon"
ws['A1'].alignment = alignment
# 保存工作簿到文件
wb.save('3.xlsx')
結(jié)果:
5 設(shè)置單元格數(shù)據(jù)格式
導(dǎo)入數(shù)據(jù)格式的字典:
from openpyxl.styles.numbers import BUILTIN_FORMATS
字典如下:

跟excel表中我們定義單元格格式中的自定義格式是一樣的

測(cè)試代碼如下:
from openpyxl import Workbook
from openpyxl.styles.numbers import BUILTIN_FORMATS
# 創(chuàng)建一個(gè)新的Excel工作簿和工作表
wb = Workbook()
ws = wb.active
# 將一些數(shù)據(jù)寫(xiě)入單元格
ws['A1'] = 12345.6789
# 設(shè)置單元格A1的數(shù)字格式為帶有兩位小數(shù)的格式
ws['A1'].number_format = BUILTIN_FORMATS[2]
#填入日期
ws['B1'] = datetime(2024,11,23)
# 設(shè)置日期格式
ws['B1'].number_format = BUILTIN_FORMATS[16]
# 保存Excel文件
wb.save('4.xlsx')結(jié)果如下:

6 設(shè)置行高和列寬
使用Worksheet對(duì)象的row_dimensions和column_dimensions屬性來(lái)設(shè)置行高和列寬。
測(cè)試代碼:
from openpyxl import Workbook
# 創(chuàng)建一個(gè)新的工作簿和工作表
wb = Workbook()
sheet = wb.active
# 設(shè)置第2行的高度為30(單位通常是磅)
sheet.row_dimensions[2].height = 30
# 設(shè)置第C列的寬度為20 (這是一個(gè)字符寬度單位,不是像素或磅)
sheet.column_dimensions['C'].width = 20
# 保存工作簿
wb.save('5.xlsx')7 填充單元格顏色
跟設(shè)置字體一樣,我們先導(dǎo)入PatternFill類
from openpyxl.styles import PatternFill
PatternFill類初始化函數(shù)如下:

- fill_type: 填充類型
None:沒(méi)有填充樣式。
solid:實(shí)心填充。
darkVertical:暗色的垂直線條填充。
darkHorizontal:暗色的水平線條填充。
darkGrid:暗色的網(wǎng)格線條填充。
darkTrellis:暗色的網(wǎng)格線條填充。
lightHorizontal:亮色的水平線條填充。
lightVertical:亮色的垂直線條填充。
lightGrid:亮色的網(wǎng)格線條填充。
lightTrellis:亮色的網(wǎng)格線條填充。
gray0625:灰色的網(wǎng)格線條填充。
lightGray:亮灰色的網(wǎng)格線條填充。
darkGray:暗灰色的網(wǎng)格線條填充。
darkUp:暗色的向上對(duì)角線條填充。
darkDown:暗色的向下對(duì)角線條填充。
darkGrid:暗色的網(wǎng)格線條填充。
darkTrellis:暗色的 trellis 網(wǎng)格線條填充。
- start_color: 起始顏色,輸入顏色16進(jìn)制的字符串。
- end_color: 結(jié)束顏色,輸入顏色16進(jìn)制的字符串。
- fgColor:起始顏色,通常為Color對(duì)象
- bgColor:結(jié)束顏色,通常為Color對(duì)象
測(cè)試代碼:
from openpyxl import Workbook
from openpyxl.styles import PatternFill,colors
# 創(chuàng)建一個(gè)新的工作簿和工作表
wb = Workbook()
ws = wb.active
# 選擇一個(gè)單元格并應(yīng)用填充顏色
ws['A1'].fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="darkUp")
# 設(shè)置單元格的值
ws['A1'] = "這是一個(gè)黃色背景的單元格"
# 選擇一個(gè)單元格并應(yīng)用填充顏色
ws['A2'].fill = PatternFill(fgColor=colors.Color(indexed="778899"), bgColor=colors.Color(indexed="778899"),
fill_type="lightTrellis")
# 設(shè)置單元格的值
ws['A2'] = "這是一個(gè)淺石板灰背景的單元格"
# 選擇一個(gè)單元格并應(yīng)用填充顏色
ws['A3'].fill = PatternFill(start_color="F0F8FF", end_color="F0F8FF", fill_type="solid")
# 設(shè)置單元格的值
ws['A3'] = "這是一個(gè)愛(ài)麗絲藍(lán)背景的單元格"
# 保存工作簿
wb.save("example.xlsx")結(jié)果:

附錄
關(guān)于顏色說(shuō)明
在OpenPyXL庫(kù)中,用于Excel電子表格處理時(shí),顏色是以RGB (Red, Green, Blue) 或者 16 進(jìn)制格式來(lái)表示的。16進(jìn)制顏色代碼通常由#開(kāi)頭,隨后跟著六個(gè)字符,前兩個(gè)代表紅色分量(00 到 FF),中間兩個(gè)代表綠色分量,最后兩個(gè)代表藍(lán)色分量(同樣范圍)。例如,#FF0000 表示紅色,#00FF00 表示綠色,#0000FF 表示藍(lán)色。
形像顏色 | 對(duì)應(yīng)顏色 | 形像顏色 | 對(duì)應(yīng)顏色 |
純白 | FFFFFF | 亮紫色 | FF00FF |
純黑 | 000000 | 純紫 | FF00FF |
象牙色 | FFFFF0 | 純紅 | FF0000 |
淺黃色 | FFFFE0 | 老飾帶 | FDF5E6 |
檸檬黃 | FFFF00 | 淺秋麒麟黃 | FAFAD2 |
黃色 | FFFF00 | 亞麻布 | FAF0E6 |
雪 | FFFAFA | 古代的白色 | FAEBD7 |
花的白色 | FFFAF0 | 鮮肉(鮭魚(yú))色 | FA8072 |
檸檬薄紗 | FFFACD | 幽靈的白色 | F8F8FF |
玉米色 | FFF8DC | 適中的春天的綠色 | F5FFFA |
海貝殼 | FFF5EE | 白煙 | F5F5F5 |
偏紅的淡紫色 | FFF0F5 | 小麥色 | F5DEB3 |
番木瓜 | FFEFD5 | 沙棕色 | F4A460 |
漂白的杏仁 | FFEBCD | 蔚藍(lán)色 | F0FFFF |
薄霧玫瑰 | FFE4E1 | 蜂蜜 | F0FFF0 |
(濃湯)乳脂,番茄等 | FFE4C4 | 愛(ài)麗絲藍(lán) | F0F8FF |
鹿皮鞋 | FFE4B5 | 卡其布 | F0E68C |
Navajo白 | FFDEAD | 淡珊瑚色 | F08080 |
桃色 | FFDAB9 | 灰秋麒麟 | EEE8AA |
金 | FFD700 | 紫羅蘭 | EE82EE |
粉紅 | FFC0CB | 深鮮肉(鮭魚(yú))色 | E9967A |
淺粉色 | FFB6C1 | 薰衣草花的淡紫色 | E6E6FA |
橙色 | FFA500 | 淡青色 | E1FFFF |
淺鮮肉(鮭魚(yú))色 | FFA07A | 結(jié)實(shí)的樹(shù) | DEB887 |
深橙色 | FF8C00 | 李子 | DDA0DD |
珊瑚 | FF7F50 | Gainsboro | DCDCDC |
熱情的粉紅 | FF69B4 | 猩紅 | DC143C |
番茄 | FF6347 | 蒼白的紫羅蘭紅色 | DB7093 |
橙紅色 | FF4500 | 秋麒麟 | DAA520 |
深粉色 | FF1493 | 蘭花的紫色 | DA70D6 |
薊 | D8BFD8 | 淡藍(lán)色 | 87CEFA |
淺灰色 | D3D3D3 | 天藍(lán)色 | 87CEEB |
曬黑 | D2B48C | 灰色 | 808080 |
巧克力 | D2691E | 橄欖綠 | 808000 |
秘魯 | CD853F | 紫色 | 800080 |
印度紅 | CD5C5C | 栗色 | 800000 |
適中的紫羅蘭紅色 | C71585 | 綠玉 | 7FFFAA |
銀白色 | C0C0C0 | 查特酒綠 | 7FFF00 |
深卡其布 | BDB76B | 草坪綠 | 7CFC00 |
玫瑰棕色 | BC8F8F | 適中的板巖暗藍(lán)灰色 | 7B68EE |
適中的蘭花紫 | BA55D3 | 淺石板灰 | 778899 |
耐火磚 | B22222 | 石板灰 | 708090 |
火藥藍(lán) | B0E0E6 | 米色(淺褐色) | 6B8E23 |
淡鋼藍(lán) | B0C4DE | 板巖暗藍(lán)灰色 | 6A5ACD |
蒼白的綠寶石 | AFEEEE | 暗淡的灰色 | 696969 |
綠黃色 | ADFF2F | 矢車菊的藍(lán)色 | 6495ED |
淡藍(lán) | ADD8E6 | 軍校藍(lán) | 5F9EA0 |
深灰色 | A9A9A9 | 橄欖土褐色(褐綠色) | 556B2F |
棕色 | A52A2A | 靛青 | 4B0082 |
黃土赭色 | A0522D | 適中的綠寶石 | 48D1CC |
深蘭花紫 | 9932CC | 深巖暗藍(lán)灰色 | 483D8B |
蒼白的綠色 | 98FB98 | 鋼藍(lán) | 4682B4 |
深藍(lán)紫色 | 9400D3 | 寶藍(lán) | 4.17E+04 |
適中的藍(lán)紫色 | 9370DB | 綠寶石 | 40E0D0 |
淡綠色 | 90EE90 | 春天的綠色 | 3CB371 |
深海洋綠 | 8FBC8F | 酸橙綠 | 32CD32 |
馬鞍棕色 | 8B4513 | 深石板灰 | 2F4F4F |
深紫色 | 8B008B | 海洋綠 | 2E8B57 |
深紅色 | 8B0000 | 森林綠 | 228B22 |
深紫羅蘭的藍(lán)色 | 8A2BE2 | 淺海洋綠 | 20B2AA |
道奇藍(lán) | 1E90FF | 深天藍(lán) | 00BFFF |
午夜的藍(lán)色 | 191970 | 深青色 | 008B8B |
水綠色,青色 | 00FFFF | 水鴨色 | 008080 |
薄荷奶油 | 00FF7F | 深綠色 | 006400 |
綠色 | 00FF00 | 藍(lán)色 | 0000FF |
適中的碧綠色 | 00FA9A | 適中的藍(lán)色 | 0000CD |
深綠寶石 | 00CED1 | 深藍(lán)色 | 00008B |
海軍藍(lán),深靛藍(lán) | 000080 |
總結(jié)
到此這篇關(guān)于python中openpyxl庫(kù)設(shè)置表格樣式之字體/邊框/對(duì)齊/顏色等的文章就介紹到這了,更多相關(guān)python openpyxl庫(kù)設(shè)置表格樣式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Pandas聚合函數(shù)的應(yīng)用示例
Pandas是當(dāng)前Python數(shù)據(jù)分析中最為重要的工具,其提供了功能強(qiáng)大且靈活多樣的API,可以滿足使用者在數(shù)據(jù)分析和處理中的多種選擇和實(shí)現(xiàn)方式,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas聚合函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-07-07
pytorch動(dòng)態(tài)網(wǎng)絡(luò)以及權(quán)重共享實(shí)例
今天小編就為大家分享一篇pytorch動(dòng)態(tài)網(wǎng)絡(luò)以及權(quán)重共享實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
pandas讀取HTML和JSON數(shù)據(jù)的實(shí)現(xiàn)示例
Pandas可以直接讀取html和JSON數(shù)據(jù),本文就來(lái)介紹一下pandas讀取HTML和JSON數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),感興趣的可以了解一下2024-01-01
淺談Tensorflow 動(dòng)態(tài)雙向RNN的輸出問(wèn)題
今天小編就為大家分享一篇淺談Tensorflow 動(dòng)態(tài)雙向RNN的輸出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
一步步教你用Python實(shí)現(xiàn)2048小游戲
相信2048這個(gè)游戲?qū)Υ蠹襾?lái)說(shuō)一定不陌生,下面這篇文章就主要給大家介紹了怎么用Python實(shí)現(xiàn)2048小游戲,文中通過(guò)注釋與示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們一起來(lái)看看吧。2017-01-01
Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實(shí)例詳解
這篇文章主要為大家介紹了Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

