python中openpyxl庫設置表格樣式之字體/邊框/對齊/顏色等
本章節(jié)主要介紹如何使用openpyxl庫設置表格中的一些樣式,比如字體,邊框,對齊方式,單元格格式,行高和列寬等。
1 安裝和使用openpyxl庫設置表格樣式
執(zhí)行pip命令安裝openpyx庫:
pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple/
目前最新版本3.1.5,安裝后在styles目錄下有多個模塊
在styles目錄的文件__init__.py中導入了一些常用的類。
- Color類: 設置顏色
- Font類: 設置字體
- Alignment類:設置示對齊方式
- Border和Side:設置邊框樣式
- PatternFill:填充單元格顏色
2 設置字體font
我們先導入Font類:
from openpyxl.styles import Font
Font類初始化函數(shù)如下:
一些常用參數(shù)具體解釋如下:
name | 設置字體名稱。比如"Arial","Times New Roman","微軟雅黑",‘宋體’,‘仿宋’等 |
sz或者size | 字體大小,比如數(shù)字11 |
i或者italic | 是否設置斜體。 |
strike | 是否設置刪除線。 |
outline | 是否設置輪廓 |
shadow | 是否設置陰影 |
colour | 字體顏色 |
b或者bold | 是否設置加粗 |
underline | 是否設置下劃線 |
family | 設置字體集。 |
charset | 設置字符集 |
其中字體的顏色需要用到類openpyxl.colors.Color類
對應的一些color信息在colors.py文件最上方的元組COLOR_INDEX中有預置的顏色數(shù)據(jù)
黑色BLACK為第1個元素,白色WHITE為第2個元素,紅色RED為第3個元素等
所以顏色對象可設置為:
from openpyxl.styles import colors #顏色設置為紅色 color_ins = colors.Color(index=2)
關于顏色的說明,參考文章最末尾。
在單元格上設置字體,完整代碼如下:
from openpyxl.styles import Font,colors from openpyxl import Workbook wb = Workbook() #先創(chuàng)建1個sheet對象 sheet0 = wb.create_sheet('sheet0',0) #單元格設置內(nèi)容 cell0 = sheet0.cell(1,1,'hello python') #設置字體對象 顏色為紅色 font_ins = Font(name="微軟雅黑", sz=18, family=2, b=True, i=True, color=colors.Color(index=2), scheme="minor") #將字體對象賦予單元格 cell0.font = font_ins #保存文件 wb.save('1.xlsx') #保存文件
結(jié)果如下:
3 設置邊框
跟設置字體一樣,我們先導入Border類和Side類:
from openpyxl.styles import Border,Side
Border類初始化函數(shù)如下:
初始化函數(shù)的常用參數(shù)解釋如下:
left | 設置左邊框,為一個Side對象,可以指定邊框的樣式(如細線、粗線等)和顏色。 |
right | 設置右邊框,同上 |
top | 設置上邊框,同上 |
bottom | 設置下邊框,同上 |
diagonal | 設置對角線樣式,同上 |
diagonalUp | 設置對角線的方向,表示從右上到左下。 |
diagonalDown | 設置對角線的方向,表示從左上到右下。 |
而Side類同Border類在同一模塊文件中:
由于Border類的各個邊框?qū)傩裕╨eft、right、top、bottom等)都是Side對象,因此了解Side類的屬性也很重要:
- style:指定邊框的樣式??蛇x值如下:
"thin":細線;"medium":中等粗細線;"thick":粗線
"double":雙線;"hair":細線;"dotted":點線
"dashDot":點劃線;"dashDotDot":雙點劃線;"dashed":虛線
"dashDotDot":雙點劃線;"mediumDashDot":中等點劃線
"mediumDashed":中等虛線;"mediumDashDotDot":中等雙點劃線
"slantDashDot":斜線點劃線
- color:設置邊框的顏色。可以使用顏色名稱的字符串。
測試代碼如下:
from openpyxl import Workbook from openpyxl.styles import Border, Side # 創(chuàng)建一個新的工作簿和工作表 wb = Workbook() sheet0 = wb.active # 創(chuàng)建一個Border對象并設置其屬性 border = Border( left=Side(style='thick', color='FF0000'), # 左邊框:粗線,紅色 right=Side(style='thin', color='FF0000'), # 右邊框:細線,紅色色 top=Side(style='double', color='FF0000'), # 頂部邊框:雙線,紅色 bottom=Side(style='medium', color='FF0000') # 底部邊框:粗線,紅色 diagonal=Side(style='medium', color='000000'),# 對角線:粗線,黑色 diagonalDown=True #對角線,左上到右下 ) # 將Border對象應用到單元格的邊框?qū)傩陨? sheet0 ['A1'].border = border # 也可以為特定區(qū)域設置邊框 for row in sheet0 ['A1:C3']: for cell in row: cell.border = border # 保存工作簿 wb.save("2.xlsx")
結(jié)果:
4 設置對齊方式
跟設置字體一樣,我們先導入Alignment類
from openpyxl.styles import Alignment
Alignment類初始化函數(shù)如下:
主要屬性具體解釋如下:
horizontal | 設置水平對齊方式 ‘general’(默認): 一般對齊 ‘left’:左對齊 ‘center’:居中對齊 ‘right’:右對齊 ‘fill’:填充對齊 ‘justify’:兩端對齊 ‘centerContinuous’:連續(xù)居中對齊 ‘distributed’:分散對齊 |
vertical | 設置垂直對齊方式 ‘top’:頂部對齊 ‘center’:居中對齊 ‘bottom’:底部對齊 ‘justify’:兩端對齊 ‘distributed’:分散對齊 |
shrinkToFit | 如果為True,當文本過長時,將縮小字體以適應單元格寬度;默認為False。 |
textRotation或者text_rotation | 設置字體旋轉(zhuǎn)方向,數(shù)值為0-180之間的數(shù)字 |
indent | 文本縮進級別,整數(shù)值,默認為0。 |
wrapText或者wrap_text | 是否設置自動換行 |
測試代碼: from openpyxl import Workbook from openpyxl.styles import Alignment # 創(chuàng)建一個新的工作簿和工作表 wb = Workbook() ws = wb.active # 創(chuàng)建一個對齊對象并設置屬性 alignment = Alignment(horizontal='center', vertical='center', wrap_text=True, indent=1, text_rotation=20) # 設置一個單元格對象并應用對齊方式的對象 ws['A1'] = "Hello Pyhon" ws['A1'].alignment = alignment # 保存工作簿到文件 wb.save('3.xlsx') 結(jié)果:
5 設置單元格數(shù)據(jù)格式
導入數(shù)據(jù)格式的字典:
from openpyxl.styles.numbers import BUILTIN_FORMATS
字典如下:
跟excel表中我們定義單元格格式中的自定義格式是一樣的
測試代碼如下: from openpyxl import Workbook from openpyxl.styles.numbers import BUILTIN_FORMATS # 創(chuàng)建一個新的Excel工作簿和工作表 wb = Workbook() ws = wb.active # 將一些數(shù)據(jù)寫入單元格 ws['A1'] = 12345.6789 # 設置單元格A1的數(shù)字格式為帶有兩位小數(shù)的格式 ws['A1'].number_format = BUILTIN_FORMATS[2] #填入日期 ws['B1'] = datetime(2024,11,23) # 設置日期格式 ws['B1'].number_format = BUILTIN_FORMATS[16] # 保存Excel文件 wb.save('4.xlsx')
結(jié)果如下:
6 設置行高和列寬
使用Worksheet對象的row_dimensions和column_dimensions屬性來設置行高和列寬。
測試代碼:
from openpyxl import Workbook # 創(chuàng)建一個新的工作簿和工作表 wb = Workbook() sheet = wb.active # 設置第2行的高度為30(單位通常是磅) sheet.row_dimensions[2].height = 30 # 設置第C列的寬度為20 (這是一個字符寬度單位,不是像素或磅) sheet.column_dimensions['C'].width = 20 # 保存工作簿 wb.save('5.xlsx')
7 填充單元格顏色
跟設置字體一樣,我們先導入PatternFill類
from openpyxl.styles import PatternFill
PatternFill類初始化函數(shù)如下:
- fill_type: 填充類型
None:沒有填充樣式。
solid:實心填充。
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:暗色的向上對角線條填充。
darkDown:暗色的向下對角線條填充。
darkGrid:暗色的網(wǎng)格線條填充。
darkTrellis:暗色的 trellis 網(wǎng)格線條填充。
- start_color: 起始顏色,輸入顏色16進制的字符串。
- end_color: 結(jié)束顏色,輸入顏色16進制的字符串。
- fgColor:起始顏色,通常為Color對象
- bgColor:結(jié)束顏色,通常為Color對象
測試代碼:
from openpyxl import Workbook from openpyxl.styles import PatternFill,colors # 創(chuàng)建一個新的工作簿和工作表 wb = Workbook() ws = wb.active # 選擇一個單元格并應用填充顏色 ws['A1'].fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="darkUp") # 設置單元格的值 ws['A1'] = "這是一個黃色背景的單元格" # 選擇一個單元格并應用填充顏色 ws['A2'].fill = PatternFill(fgColor=colors.Color(indexed="778899"), bgColor=colors.Color(indexed="778899"), fill_type="lightTrellis") # 設置單元格的值 ws['A2'] = "這是一個淺石板灰背景的單元格" # 選擇一個單元格并應用填充顏色 ws['A3'].fill = PatternFill(start_color="F0F8FF", end_color="F0F8FF", fill_type="solid") # 設置單元格的值 ws['A3'] = "這是一個愛麗絲藍背景的單元格" # 保存工作簿 wb.save("example.xlsx")
結(jié)果:
附錄
關于顏色說明
在OpenPyXL庫中,用于Excel電子表格處理時,顏色是以RGB (Red, Green, Blue) 或者 16 進制格式來表示的。16進制顏色代碼通常由#開頭,隨后跟著六個字符,前兩個代表紅色分量(00 到 FF),中間兩個代表綠色分量,最后兩個代表藍色分量(同樣范圍)。例如,#FF0000 表示紅色,#00FF00 表示綠色,#0000FF 表示藍色。
形像顏色 | 對應顏色 | 形像顏色 | 對應顏色 |
純白 | FFFFFF | 亮紫色 | FF00FF |
純黑 | 000000 | 純紫 | FF00FF |
象牙色 | FFFFF0 | 純紅 | FF0000 |
淺黃色 | FFFFE0 | 老飾帶 | FDF5E6 |
檸檬黃 | FFFF00 | 淺秋麒麟黃 | FAFAD2 |
黃色 | FFFF00 | 亞麻布 | FAF0E6 |
雪 | FFFAFA | 古代的白色 | FAEBD7 |
花的白色 | FFFAF0 | 鮮肉(鮭魚)色 | FA8072 |
檸檬薄紗 | FFFACD | 幽靈的白色 | F8F8FF |
玉米色 | FFF8DC | 適中的春天的綠色 | F5FFFA |
海貝殼 | FFF5EE | 白煙 | F5F5F5 |
偏紅的淡紫色 | FFF0F5 | 小麥色 | F5DEB3 |
番木瓜 | FFEFD5 | 沙棕色 | F4A460 |
漂白的杏仁 | FFEBCD | 蔚藍色 | F0FFFF |
薄霧玫瑰 | FFE4E1 | 蜂蜜 | F0FFF0 |
(濃湯)乳脂,番茄等 | FFE4C4 | 愛麗絲藍 | F0F8FF |
鹿皮鞋 | FFE4B5 | 卡其布 | F0E68C |
Navajo白 | FFDEAD | 淡珊瑚色 | F08080 |
桃色 | FFDAB9 | 灰秋麒麟 | EEE8AA |
金 | FFD700 | 紫羅蘭 | EE82EE |
粉紅 | FFC0CB | 深鮮肉(鮭魚)色 | E9967A |
淺粉色 | FFB6C1 | 薰衣草花的淡紫色 | E6E6FA |
橙色 | FFA500 | 淡青色 | E1FFFF |
淺鮮肉(鮭魚)色 | FFA07A | 結(jié)實的樹 | DEB887 |
深橙色 | FF8C00 | 李子 | DDA0DD |
珊瑚 | FF7F50 | Gainsboro | DCDCDC |
熱情的粉紅 | FF69B4 | 猩紅 | DC143C |
番茄 | FF6347 | 蒼白的紫羅蘭紅色 | DB7093 |
橙紅色 | FF4500 | 秋麒麟 | DAA520 |
深粉色 | FF1493 | 蘭花的紫色 | DA70D6 |
薊 | D8BFD8 | 淡藍色 | 87CEFA |
淺灰色 | D3D3D3 | 天藍色 | 87CEEB |
曬黑 | D2B48C | 灰色 | 808080 |
巧克力 | D2691E | 橄欖綠 | 808000 |
秘魯 | CD853F | 紫色 | 800080 |
印度紅 | CD5C5C | 栗色 | 800000 |
適中的紫羅蘭紅色 | C71585 | 綠玉 | 7FFFAA |
銀白色 | C0C0C0 | 查特酒綠 | 7FFF00 |
深卡其布 | BDB76B | 草坪綠 | 7CFC00 |
玫瑰棕色 | BC8F8F | 適中的板巖暗藍灰色 | 7B68EE |
適中的蘭花紫 | BA55D3 | 淺石板灰 | 778899 |
耐火磚 | B22222 | 石板灰 | 708090 |
火藥藍 | B0E0E6 | 米色(淺褐色) | 6B8E23 |
淡鋼藍 | B0C4DE | 板巖暗藍灰色 | 6A5ACD |
蒼白的綠寶石 | AFEEEE | 暗淡的灰色 | 696969 |
綠黃色 | ADFF2F | 矢車菊的藍色 | 6495ED |
淡藍 | ADD8E6 | 軍校藍 | 5F9EA0 |
深灰色 | A9A9A9 | 橄欖土褐色(褐綠色) | 556B2F |
棕色 | A52A2A | 靛青 | 4B0082 |
黃土赭色 | A0522D | 適中的綠寶石 | 48D1CC |
深蘭花紫 | 9932CC | 深巖暗藍灰色 | 483D8B |
蒼白的綠色 | 98FB98 | 鋼藍 | 4682B4 |
深藍紫色 | 9400D3 | 寶藍 | 4.17E+04 |
適中的藍紫色 | 9370DB | 綠寶石 | 40E0D0 |
淡綠色 | 90EE90 | 春天的綠色 | 3CB371 |
深海洋綠 | 8FBC8F | 酸橙綠 | 32CD32 |
馬鞍棕色 | 8B4513 | 深石板灰 | 2F4F4F |
深紫色 | 8B008B | 海洋綠 | 2E8B57 |
深紅色 | 8B0000 | 森林綠 | 228B22 |
深紫羅蘭的藍色 | 8A2BE2 | 淺海洋綠 | 20B2AA |
道奇藍 | 1E90FF | 深天藍 | 00BFFF |
午夜的藍色 | 191970 | 深青色 | 008B8B |
水綠色,青色 | 00FFFF | 水鴨色 | 008080 |
薄荷奶油 | 00FF7F | 深綠色 | 006400 |
綠色 | 00FF00 | 藍色 | 0000FF |
適中的碧綠色 | 00FA9A | 適中的藍色 | 0000CD |
深綠寶石 | 00CED1 | 深藍色 | 00008B |
海軍藍,深靛藍 | 000080 |
總結(jié)
到此這篇關于python中openpyxl庫設置表格樣式之字體/邊框/對齊/顏色等的文章就介紹到這了,更多相關python openpyxl庫設置表格樣式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pytorch動態(tài)網(wǎng)絡以及權重共享實例
今天小編就為大家分享一篇pytorch動態(tài)網(wǎng)絡以及權重共享實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01pandas讀取HTML和JSON數(shù)據(jù)的實現(xiàn)示例
Pandas可以直接讀取html和JSON數(shù)據(jù),本文就來介紹一下pandas讀取HTML和JSON數(shù)據(jù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,感興趣的可以了解一下2024-01-01淺談Tensorflow 動態(tài)雙向RNN的輸出問題
今天小編就為大家分享一篇淺談Tensorflow 動態(tài)雙向RNN的輸出問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解
這篇文章主要為大家介紹了Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08