【Python】Worksheet.merge_cellsメソッドを使って、セルを結合する。


pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、セルの結合に関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。

上記のようなブック「表」を

の様な年のセルを結合したいです。

Worksheet.merge_cellsメソッド

ws.merge_cells(start_row=開始の行番号, start_column=開始の列番号,
               end_row=終了の行番号, end_column=終了の列番号)

セルの結合は上記のようにWorksheet.merge_cellsメソッドを使うのですが
ここで気を付けるのは列番号で、
A,B,C・・・ではなく、1,2,3・・・のように数値を設定します。

最終的なコード

from openpyxl import load_workbook
from openpyxl.styles import Alignment, Border, PatternFill, Side

wb = load_workbook('表.xlsx')
ws = wb.active

green_fill = PatternFill(fgColor='C6E0B4', fill_type='solid')
center_alignment = Alignment(horizontal='center')
black_thin = Side(color='000000', border_style='thin')
border = Border(left=black_thin, right=black_thin,
                top=black_thin, bottom=black_thin)

row_no = 2
start = 5
end = 16

# セルを結合
ws.merge_cells(start_row=row_no, start_column=start,
               end_row=row_no, end_column=end)

# 結合したセルの塗りつぶし
ws.cell(row_no, start).fill = green_fill

# 結合したセルの文字配置
ws.cell(row_no, start).alignment = center_alignment

# 結合したセルの罫線
for column_no in range(start, end+1):
    ws.cell(row_no, column_no).border = border

wb.save('表_結合.xlsx')

ここでも、注意点があります。

罫線の設定は結合したセルすべてに対して設定する必要があるということです。

何気に見落としがちなので注意した方が良いです。
(私は???ってなってました。)