styles 模組說明
styles 模組提供了許多用於設定和控制單元格樣式的類和方法。這些類和方法可以幫助你定製 Excel 工作表中單元格的外觀,包括字型樣式、邊框、填充顏色等。
styles 模組主要功能
Font(字型):Font 類用於定義和修改單元格中文字的字型樣式,如字型名稱、大小、顏色、粗體、斜體等。
PatternFill(填充顏色):PatternFill 類允許設定單元格的填充顏色和填充樣式。
Border(邊框):Border 類用於定義單元格的邊框樣式,包括邊框粗細、顏色和線條樣式。
Alignment(對齊):Alignment 類允許控制單元格中內容的對齊方式,包括水平對齊(左對齊、居中、右對齊)和垂直對齊。
NamedStyle(命名樣式):NamedStyle 類用於建立自定義的命名樣式,將多個單元格樣式屬性組合在一起。
styles 模組匯入
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border
Font
Font(): 透過 Font 類,可以控制字型的名稱、大小、顏色、樣式(粗體、斜體等)等屬性,從而定製單元格中文字的外觀。
Font() 引數:
name="Calibri":設定字型為 Calibri。
sz=11:設定字號為 11。
family=2:指定字型族,2 代表無襯線字型。
b=False:設定粗體為 False,即不啟用粗體效果。
i=False:設定斜體為 False,即不啟用斜體效果。
color=Color(theme=1):設定顏色為主題顏色,並選擇第一個主題顏色。
scheme="minor":指定該字型樣式屬於次要文字方案。
charset=None:字符集。
u=None:下劃線樣式。
strike=None:刪除線效果。
strikethrough=None:是否有刪除線。
vertAlign=None:垂直對齊方式。
outline=None:外框。
shadow=None:陰影。
condense=None:是否壓縮。
extend=None:延伸效果。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border
# 建立一個新的Excel工作簿
wb = Workbook()
# 獲取第一個工作表
worksheet = wb.active
# 設定單元格的值
cell_A1 = worksheet.cell(row=1, column=1, value=30) # 設定第一行第一列的值為 30
# 定義字型樣式
font_style = Font(name='Arial', # 字型名稱
size=12, # 字型大小
bold=True, # 加粗
italic=False, # 斜體
color='FF0000', # 字型顏色(紅色)
underline='single') # 下劃線樣式(單線)
# 設定單元格的樣式
cell_A1.font = font_style
# 儲存工作簿到指定的檔名
wb.save("execl_test.xlsx")
# 關閉工作簿
wb.close()
PatternFill
PatternFill(填充顏色):PatternFill 類允許設定單元格的填充顏色和填充樣式。
PatternFill 引數:
patternType=None:填充的圖案型別。
fgColor=Color():前景色,即填充的主要顏色。
bgColor=Color():背景色,即填充的背景顏色。
fill_type=None:填充型別,例如 'solid' 純色填充。
start_color=None:漸變填充的起始顏色。
end_color=None:漸變填充的結束顏色。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color
# 建立一個新的Excel工作簿
wb = Workbook()
# 獲取第一個工作表
worksheet = wb.active
# 設定單元格的值
cell_A1 = worksheet.cell(row=1, column=1, value=30) # 設定第一行第一列的值為 30
# 定義填充樣式
pattern_fill = PatternFill(patternType='solid', fgColor=Color(rgb="00FF00")) # 這裡使用綠色作為填充顏色
# 設定單元格的樣式
cell_A1.fill = pattern_fill
# 儲存工作簿到指定的檔名
wb.save("execl_test.xlsx")
# 關閉工作簿
wb.close()
Border
Border(邊框):Border 類用於定義單元格的邊框樣式,包括邊框粗細、顏色和線條樣式。
Border 引數:
left:左邊框樣式。
right:右邊框樣式。
top:頂部邊框樣式。
bottom:底部邊框樣式。
diagonal:對角線邊框樣式。
diagonal_direction:對角線方向。
vertical:垂直邊框樣式。
horizontal:水平邊框樣式。
diagonalUp:是否使用從左上到右下的對角線。
diagonalDown:是否使用從左下到右上的對角線。
outline:是否應用外框。
start:起始邊框樣式。
end:結束邊框樣式。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color, Side
# 建立一個新的Excel工作簿
wb = Workbook()
# 獲取第一個工作表
worksheet = wb.active
# 設定單元格的值
cell_A1 = worksheet.cell(row=1, column=1, value=30) # 設定第一行第一列的值為 30
# 建立邊框樣式
thin_border = Border(left=Side(style='thin'),
right=Side(style='thin'),
top=Side(style='thin'),
bottom=Side(style='thin'))
# # 應用邊框樣式到單元格範圍
cell_A1.border = thin_border # 設定單元格A1的邊框樣式
# 選定單元格範圍B1:C3
cell_range = worksheet["B1:C3"]
for row in cell_range:
for cell in row:
cell.border = thin_border # 設定單元格範圍B1:C3的邊框樣式
# 儲存工作簿到指定的檔名
wb.save("execl_test.xlsx")
# 關閉工作簿
wb.close()
Alignment
Alignment(對齊):Alignment 類允許控制單元格中內容的對齊方式,包括水平對齊(左對齊、居中、右對齊)和垂直對齊。
Alignment 引數:
horizontal:文字在單元格內的水平對齊方式。
vertical:文字在單元格內的垂直對齊方式。
textRotation:文字旋轉角度。
wrapText:是否自動換行。
shrinkToFit:是否縮小字型以適應。
indent:文字縮排級別。
relativeIndent:相對縮排級別。
justifyLastLine:是否兩端對齊最後一行文字。
readingOrder:文字的讀取順序。
text_rotation:文字旋轉角度。
wrap_text:是否自動換行。
shrink_to_fit:是否縮小字型以適應。
mergeCell:是否合併單元格內的文字。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color, Side
# 建立一個新的Excel工作簿
wb = Workbook()
# 獲取第一個工作表
worksheet = wb.active
# 設定單元格的值
cell_A1 = worksheet.cell(row=1, column=1, value="This is a long text that will wrap")
# 建立一個 Alignment 物件
alignment = Alignment(horizontal='center', # 水平居中
vertical='center', # 垂直居中
textRotation=45, # 文字旋轉角度
wrapText=True, # 自動換行
shrinkToFit=True, # 縮小字型以適應
indent=2) # 縮排兩個字元
# 將對齊樣式應用於單元格 A1
cell_A1.alignment = alignment
# 調整列寬和行高以適應自動換行
default_row_height = worksheet.row_dimensions[1].height
worksheet.row_dimensions[1].height = 30 # 設定行高
worksheet.column_dimensions['A'].width = 30 # 設定列寬
# 儲存工作簿到指定的檔名
wb.save("execl_test.xlsx")
# 關閉工作簿
wb.close()
NamedStyle
NamedStyle(命名樣式):NamedStyle 類用於建立自定義的命名樣式,將多個單元格樣式屬性組合在一起。
NamedStyle 引數:
name:命名樣式的名稱。 唯一的名稱。
font:字型樣式,可以透過 openpyxl.styles.Font 類定義。
fill:填充樣式,可以透過 openpyxl.styles.PatternFill 類定義。
border:邊框樣式,可以透過 openpyxl.styles.Border 類定義。
alignment:對齊樣式,可以透過 openpyxl.styles.Alignment 類定義。
number_format:數字格式。
protection:保護設定,可以透過 openpyxl.styles.Protection 類定義。
builtinId:內建 ID。
hidden:是否隱藏。
xfId:擴充套件欄位 ID
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color, Protection
# 建立一個新的Excel工作簿
wb = Workbook()
# 獲取第一個工作表
worksheet = wb.active
# 設定單元格的值
cell_A1 = worksheet.cell(row=1, column=1, value="This is a long text that will wrap")
# 建立一個 NamedStyle 物件
normal_style = NamedStyle(name="CustomStyle",
font=Font(), # 字型樣式
fill=PatternFill(), # 填充樣式
border=Border(), # 邊框樣式
alignment=Alignment(), # 對齊樣式
number_format=None, # 數字格式
protection=Protection(), # 保護設定
builtinId=None, # 內建樣式 ID
hidden=False,
xfId=None)
# 將樣式應用於單元格 A1
cell_A1.style = normal_style
# 儲存工作簿到指定的檔名
wb.save("execl_test.xlsx")
# 關閉工作簿
wb.close()
參考文件
https://openpyxl.readthedocs.io/en/stable/styles.html#/