【初心者向け】openpyxlでセルを結合・解除する方法|罫線の注意点も解説

openpyxlでセルを結合する方法

PythonでExcelを操作できるライブラリ openpyxl。中でも、見出しや表のレイアウトに便利なのがセルの結合機能です。

この記事では、merge_cells()によるセルの結合方法と、罫線の注意点、解除方法までを初心者向けにわかりやすく紹介します。

セル結合には merge_cells() 

セルの結合は、merge_cells()メソッドを使って行います。結合したいセルの範囲を文字列で指定するだけです。

基本の使用例

from openpyxl import Workbook

# 新しいExcelファイルを作成
wb = Workbook()
ws = wb.active

# A1からC1を結合
ws.merge_cells('A1:C1')

# 結合セルに値を入力(左上のA1セルが対象)
ws['A1'] = "タイトル"

# 保存
wb.save("merged_cells.xlsx")

セル結合時のポイント

  • 値を入力するのは左上のセルのみ(上記の場合はA1)
  • 他のセル(B1やC1)には値は保存されない

結合セルの罫線設定に関する注意点

openpyxlでセルを結合した場合、罫線は自動的に結合範囲全体には適用されません
見た目を整えるためには、結合されたすべてのセルに対して個別に罫線を設定する必要があります

A1:D1のセルを結合し、A1に罫線の設定をした例です。
結合範囲全体ではなく、A1セルにのみ罫線が引かれています。

たとえば、A1:D1 のように複数列にまたがって結合する場合、以下のように結合範囲内のすべてのセルに border を設定しましょう。

for col in range(1, 5):  # A〜D列
    ws.cell(row=1, column=col).border = thin_border

openpyxlで結合セルを解除する方法

Excelファイル内で一度結合したセルを元に戻したい(解除したい)場面はよくあります。
openpyxlでは、unmerge_cells() メソッドを使えば、簡単にセルの結合を解除できます。

unmerge_cells() の基本的な使い方

解除したいセル範囲を、merge_cells()のときと同じく「A1:C1」などの文字列形式で指定します。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# セルの結合
ws.merge_cells('A1:C1')
ws['A1'] = "結合セル"

# 結合の解除
ws.unmerge_cells('A1:C1')

# 保存
wb.save("unmerge_example.xlsx")

結合セルを解除する際の注意点

  • 解除は結合時と同じ範囲を指定する必要がある
  • 解除しても、左上のセルに入っていた値はそのまま残る
  • 結合範囲内の他のセル(例:B1、C1)は空のまま

すべての結合セルを一括で解除する例

シート内に存在するすべての結合セルを一括で解除したい場合は、merged_cells.rangesを使ってループ処理で対応できます。

for merged_range in list(ws.merged_cells.ranges):
    ws.unmerge_cells(str(merged_range))

公式ドキュメント

openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.1.3 documentation

関連記事

【初心者向け】openpyxlの結合セルの扱い方|よくある落とし穴と対処法を解説
結合されたセルから値を取得する際の注意点openpyxlで結合されたセルから値を取得する場合、つまずきやすいポイントがあります。それは、結合セルの値は「左上のセル」にしか存在しないという仕様です。値が入っているのは左上セルだけ例えば、A1〜...

コメント

タイトルとURLをコピーしました