Excel シートのデザインを揃えるうえで、罫線(ボーダー)を統一することは欠かせません。openpyxl を利用すれば、セル範囲を指定して一度に罫線を設定できます。本記事では thin(細線) を例にコードを示し、その他の border_style
(hair/medium/thick/double)への切り替え方法もご説明いたします。
目次
動作環境
項目 | 内容 |
---|
Python | 3.9 以上 |
ライブラリ | openpyxl(pip install openpyxl ) |
入力ファイル | sales_results.xlsx |
出力ファイル | sales_results_bordered.xlsx |
サンプルコード(細線を適用)
from openpyxl import load_workbook
from openpyxl.styles import Border, Side
# 1. ワークブックとシートを取得
wb_path = 'sales_results.xlsx'
workbook = load_workbook(wb_path)
sheet = workbook.active
# 2. 罫線のスタイルを定義(thin)
thin_side = Side(border_style='thin', color='000000')
uniform_border = Border(
left=thin_side,
right=thin_side,
top=thin_side,
bottom=thin_side
)
# 3. 対象セル範囲(ここでは B2 以降)の罫線を統一
for row in sheet.iter_rows(min_row=2, min_col=2):
for cell in row:
cell.border = uniform_border
# 4. 保存
workbook.save('sales_results_bordered.xlsx')
解説
行 | 説明 |
---|
Side(border_style='thin', ...) | border_style に 'thin' を指定すると、一般的な細線が生成されます。 |
Border(...) | 左右上下すべてに同じ Side を設定すれば、セルが枠で囲まれます。 |
iter_rows(min_row=2, min_col=2) | 見出し行・列を除外したい場合は開始行・列を指定します。 |
他の罫線スタイルへ変更するには
スタイル | 指定例 | 主な用途 |
---|
'hair' | Side(border_style='hair') | 極細線で区切りを目立たせたくない場合 |
'medium' | Side(border_style='medium') | 太さをはっきりさせたい枠線 |
'thick' | Side(border_style='thick') | セクション区切りを強調したい場合 |
'double' | Side(border_style='double') | 二重線でタイトル周囲を装飾するとき |
いずれも thin_side
の部分を置き換えるだけで適用できます。
応用ポイント
目的 | 実装方法 |
---|
行ごとに罫線を変える | 行番号の偶奇で if 文を分岐し、Side を切り替えます。 |
外枠だけを太線にする | ループ内で先頭列・最終列・先頭行・最終行を判定し、それぞれ別の Border を割り当てます。 |
既存の罫線をリセット | cell.border = Border() を実行すると、罫線なしに戻せます。 |
まとめ
- Side と Border を組み合わせることで、罫線を自在にカスタマイズできます。
- 罫線スタイルは
'hair'
から 'double'
まで幅広く用意されており、要件に合わせて切り替えるだけで見栄えを統一できます。
iter_rows()
でセル範囲を一括操作すれば、Excel 上の手作業を大幅に効率化できます。