openpyxl styles 模組

小吉猫發表於2024-05-21

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()

openpyxl styles 模組

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()

openpyxl styles 模組

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()

openpyxl styles 模組

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()

openpyxl styles 模組

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()

openpyxl styles 模組

參考文件

https://openpyxl.readthedocs.io/en/stable/styles.html#/

相關文章