【python】Excelシートに自動で罫線を引く方法(openpyxl)

目次

ライブラリのインストール

pythonでExcel操作を可能にするopenpyxlライブラリをインストールしましょう。

ターミナル(mac)もしくはコマンドプロンプト(Windows)で下記を実行します。

(参考:PyPI – the Python Package Index)

pip install openpyxl
openpyxlのインストール

最後の行に「Successfully installed 〜〜〜」と表示されればインストールは成功です。


Excelシートに罫線を引く

ライブラリをインストールできたら、早速pythonでExcelシートに罫線を引いていきましょう。

pythonのサンプルコードを見ながら紹介していきます。


Excelファイル読込・シート選択

まずは、罫線を引くExcelファイルを読み込み、シートを選択しましょう。

# 「sample.py」というExcelファイルを読み込み
wb = openpyxl.load_workbook("sample.xlsx")

# 「Sheet」というシート名のシートを選択
ws = wb["Sheet"]

例としてこのように、セルに値が入った「Sheet」シートを選択します。


罫線スタイル指定

openpyxlライブラリでは罫線スタイルを扱うモジュールが用意されています。

from openpyxl.styles.borders import Border, Side

罫線の色とスタイルを指定できるSideモジュール
罫線をセル周りのどこに引くかを指定できるBorderモジュール

をあらかじめインポートしておきましょう。


Sideモジュール

Sideモジュールを使って、罫線の色とスタイルを指定していきましょう。


# 罫線のスタイル(style)を"thin", 色(color)を16進数表記で黒(#000000から#を抜いて000000)
side = Side(style="thin", color="000000")

16進数カラーコードの先頭の『#』は書かないよう気をつけましょう。

『#』を付けるとエラーが出てしまいます。


16進数のカラーコードを調べる際は、こちらを参考にしてみてください。


他にもGoogle検索で「#ffffff」や「#00ff00」と適当な16進数のカラーコードを検索して、カラーピッカーを表示させることもできますよ。


罫線のスタイルは以下の13種類が用意されています。

borderスタイル
borderの線スタイル13種類
番号引数styleの値
1"dashDot"
2"dashDotDot"
3"double"
4"hair"
5"dotted"
6"mediumDashDotDot"
7"dashed"
8"mediumDashed"
9"slantDashDot"
10"thick"
11"thin"
12"medium"
13"mediumDashDot"

Borderモジュール

Borderモジュールを使って、セル周りのどの辺に罫線を引くか指定することができます。

# 上下左右すべてに罫線を引く場合
border = Border(top=side, bottom=side, right=side, left=side)

# 上下のみに罫線を引く場合
border_top_bottom = Border(top=side, bottom=side)

# 左右のみに罫線を引く場合
border_left_right = Border(right=side, left=side)

このように、Borderモジュールの引数に指定した辺だけに罫線を引くことになります。


罫線を引く 1

では、これらSideモジュールとBorderモジュールを組み合わせて実際に罫線を引いてみましょう。

# 値が存在するセルに順番に罫線を引く
for row in ws:
    for cell in row:
        # cell.coordinateでセルの番地を"A3"とセルアドレスに変換
        ws[cell.coordinate].border = border

実行結果を見ると、以下のように値が存在するすべてのセルに罫線が引かれていることがわかります。


罫線を引く 2

試しに、罫線の色やスタイル変えてみましょう。

side2 = Side(style="mediumDashDot", color="ff0000")

border2 = Border(top=side, left=side2)

for row in ws:
    for cell in row:
        # cell.coordinateでセルの番地を"A3"とセルアドレスに変換
        ws[cell.coordinate].border = border2

上記コードの実行結果を見てみましょう。

以下のようにセル上辺は黒で実線、セル左辺は赤で点線になっていますね。

SideモジュールとBorderモジュールを駆使して自由に罫線を引くことができます。


Excelファイルを保存

罫線を引いたら忘れずにExcelファイルを保存しましょう。

# 元の「sample.xlsx」に『上書き保存』
wb.save("sample.xlsx")

# 新たに「border.xlsx」として『名前をつけて保存』
wb.save("border.xlsx")

まとめ

pythonではopenpyxlライブラリのSideモジュール、Borderモジュールを使ってExcelシートに罫線を引くことができます。

ぜひ活用してみてくださいね。


よかったらシェアしてね!
目次