styles.borders【罫線】モジュール
メモ ( 概要 罫線の指定方法 ) 定数 例
Border【罫線】クラス: クラス定義 プロパティ
Side【罫線スタイル】クラス: クラス定義 プロパティ
メモ
概要
- Cell【セル】の罫線に関連するモジュール
- Excelの [セルの書式設定]-[罫線]タブ に対応
- Excelの [セルの書式設定]-[罫線]タブ に対応
- モジュール内定義
- BORDER_~【線のスタイル】定数
- Border【罫線】クラス
- Side【罫線スタイル】クラス
- インポート
- 下記は、openpyxl.styles からインポート可
Border【罫線】クラス
Side【罫線スタイル】クラス
- 下記は、openpyxl.styles からインポート可
- その他スタイルは、cell【セル】モジュール 参照 (個々の詳細は下記モジュール)
- styles.numbers【表示形式】 ・styles.alignment【配置】 ・styles.fonts【フォント】 ・styles.fills【塗りつぶし】 ・styles.protection【シート保護】
- 関連モジュール
罫線の指定方法
〔 例 〕- Border【罫線】の作成
- Side【罫線スタイル】と下記の対象線を指定して作成
- 四辺:left【左辺の線種】・right【右辺の線種】・top【上辺の線種】・bottom【下辺の線種】
- 対角線:diagonal【対角の線種】と diagonalUp【右上がりの対角線の有無】・diagonalDown【右下がりの対角線の有無】の組合せ
- 単一セルの指定
- Cell【セル】のborder【罫線】プロパティにBorder【罫線】を指定
- 複数セルの指定
- 一括で指定できない為、該当セルに上記の単一セルの処理
- 結合セルの指定
- 結合対象の全てのセルに対して上記の単一セルの処理 (仕様上は左上セルのみで設定可)
外部リンク
- openpyxl (英語)
- ECMA-376:Office Open XML file formats (英語)
SpreadsheetML:Styles -- border (Border)
- bottom (Bottom Border)
- end (Trailing Edge Border)
- start (Leading Edge Border)
- top (Top Border)
定数
線のスタイル | 値 | 備考 |
---|---|---|
BORDER_NONE | None | なし |
BORDER_DASHDOT | 'dashDot' | 一点鎖線 |
BORDER_DASHDOTDOT | 'dashDotDot' | 二点鎖線 |
BORDER_DASHED | 'dashed' | 破線 |
BORDER_DOTTED | 'dotted' | 点線 |
BORDER_DOUBLE | 'double' | 二重線 |
BORDER_HAIR | 'hair' | 点線 (細) |
BORDER_MEDIUM | 'medium' | 実線 (中) |
BORDER_MEDIUMDASHDOT | 'mediumDashDot' | 一点鎖線 (中) |
BORDER_MEDIUMDASHDOTDOT | 'mediumDashDotDot' | 二点鎖線 (中) |
BORDER_MEDIUMDASHED | 'mediumDashed' | 破線 (中) |
BORDER_SLANTDASHDOT | 'slantDashDot' | 斜め破線 |
BORDER_THICK | 'thick' | 実線 (太) |
BORDER_THIN | 'thin' | 実線 (細) |
Border【罫線】クラス
クラス定義
クラス | 備考 |
---|---|
親:openpyxl.descriptors.serialisable.Serialisable インポート:from openpyxl.styles import Border (省略形) | |
class Border( left=None, right=None, top=None, bottom=None, diagonal=None, diagonal_direction=None, vertical=None, horizontal=None, diagonalUp=False, diagonalDown=False, outline=True, start=None, end=None) | 罫線 left (Side)左辺の線種 right (Side)右辺の線種 top (Side)上辺の線種 bottom (Side)下辺の線種 diagonal (Side)対角の線種 diagonal_direction vertical (Side) horizontal (Side) diagonalUp (bool)右上がりの対角線の有無 diagonalDown (bool)右下がりの対角線の有無 outline (bool) start (Side) end (Side) |
プロパティ
プロパティ | 型 | 備考 |
---|---|---|
bottom | Side | 下辺の線種 |
diagonal | Side | 対角の線種 |
diagonal_direction | ||
diagonalDown | bool | 右上がりの対角線の有無 |
diagonalUp | bool | 右下がりの対角線の有無 |
end | Side | |
horizontal | Side | |
left | Side | 左辺の線種 |
outline | bool | |
right | Side | 右辺の線種 |
start | Side | |
tagname | str | タグ名 ('border') |
top | Side | 上辺の線種 |
vertical | Side |
Side【罫線スタイル】クラス
クラス定義
クラス | 備考 |
---|---|
親:openpyxl.descriptors.serialisable.Serialisable インポート:from openpyxl.styles import Side (省略形) | |
class Side( style=None, color=None, border_style=None) | 罫線スタイル style (str)線のスタイル (border_style) color (Color | str)色 border_style (str)線のスタイル (優先) |
プロパティ
プロパティ | 型 | 備考 |
---|---|---|
border_style | str | style【線のスタイル】のエイリアス |
color | Color | 色 |
style | str | 線のスタイル (線のスタイル定数 参照) |
例
罫線の指定方法
from openpyxl import Workbook
from openpyxl.styles import Border, Side, borders
# ワークブック作成
wb = Workbook()
ws = wb.active
WORKBOOK = 'sample.xlsx'
COLOR_BORDER = '000000FF'
# 単一セルの指定
list_boders = [
borders.BORDER_NONE,
borders.BORDER_DASHDOT,
borders.BORDER_DASHDOTDOT,
borders.BORDER_DASHED,
borders.BORDER_DOTTED,
borders.BORDER_DOUBLE,
borders.BORDER_HAIR,
borders.BORDER_MEDIUM,
borders.BORDER_MEDIUMDASHDOT,
borders.BORDER_MEDIUMDASHDOTDOT,
borders.BORDER_MEDIUMDASHED,
borders.BORDER_SLANTDASHDOT,
borders.BORDER_THICK,
borders.BORDER_THIN,
]
row = 2
for border in list_boders:
col = 2
value = 'None' if border == None else border
ws.cell(row, col, value)
side = Side(
border_style=border,
color=COLOR_BORDER)
# 四辺
col += 1
cell = ws.cell(row, col)
cell.border = Border(side, side, side, side)
# 四辺+右上がりの対角線
col += 2
cell = ws.cell(row, col)
cell.border = Border(
side, side, side, side,
diagonal=side,
diagonalUp=True)
# 四辺+右下がりの対角線
col += 2
cell = ws.cell(row, col)
cell.border = Border(
side, side, side, side,
diagonal=side,
diagonalDown=True)
# 四辺+対角線
col += 2
cell = ws.cell(row, col)
cell.border = Border(
side, side, side, side,
diagonal=side,
diagonalUp=True,
diagonalDown=True)
row += 2
# 列幅
ws.column_dimensions['A'].width = 2
ws.column_dimensions['B'].width = 20
ws.column_dimensions['C'].width = 10
ws.column_dimensions['D'].width = 2
ws.column_dimensions['E'].width = 10
ws.column_dimensions['F'].width = 2
ws.column_dimensions['G'].width = 10
ws.column_dimensions['H'].width = 2
ws.column_dimensions['I'].width = 10
# 複数セルの指定
ws['B31'] = '複数セル'
side = Side(
borders.BORDER_THICK,
COLOR_BORDER)
border = Border(side, side, side, side)
# 1行
cells = ws['E31:G31']
print(cells)
# 出力:
# ((<Cell 'Sheet'.E31>, <Cell 'Sheet'.F31>, <Cell 'Sheet'.G31>),)
for row in cells:
for cell in row:
cell.border = border
# 1列
cells = ws['C33:C35']
print(cells)
# 出力:
# ((<Cell 'Sheet'.C33>,), (<Cell 'Sheet'.C34>,), (<Cell 'Sheet'.C35>,))
for row in cells:
for cell in row:
cell.border = border
# 複数行・複数列
cells = ws['E33:G35']
print(cells)
# 出力:
# ((<Cell 'Sheet'.E33>, <Cell 'Sheet'.F33>, <Cell 'Sheet'.G33>),
# (<Cell 'Sheet'.E34>, <Cell 'Sheet'.F34>, <Cell 'Sheet'.G34>),
# (<Cell 'Sheet'.E35>, <Cell 'Sheet'.F35>, <Cell 'Sheet'.G35>))
for row in cells:
for cell in row:
cell.border = border
# 結合セルの指定
ws['B37'] = '結合セル'
side = Side(
borders.BORDER_THICK,
COLOR_BORDER)
border = Border(side, side, side, side)
# 1セルのみ指定
ws.merge_cells('C37:E39')
ws['C37'].border = border
# 全セル指定
address = 'G37:I39'
ws.merge_cells(address)
cells = ws[address]
print(cells)
# 出力:
# ((<Cell 'Sheet'.G37>, <MergedCell 'Sheet'.H37>, <MergedCell 'Sheet'.I37>),
# (<MergedCell 'Sheet'.G38>, <MergedCell 'Sheet'.H38>, <MergedCell 'Sheet'.I38>),
# (<MergedCell 'Sheet'.G39>, <MergedCell 'Sheet'.H39>, <MergedCell 'Sheet'.I39>))
for row in cells:
for cell in row:
cell.border = border
# ワークブック保存
wb.save(WORKBOOK)