PythonのopenpyxlでExcelの行・列の調整、セルの結合、ウィンドウ枠の固定を行う

この記事では、Pythonのopenpyxlライブラリを使い、Excelワークシートの見た目を整えるための基本的な操作、具体的には行の高さと列の幅の調整、セルの結合と解除、そしてウィンドウ枠の固定について解説します。


目次

行の高さと列の幅を設定する

シートのrow_dimensions属性とcolumn_dimensions属性を介して、特定の行の高さや列の幅を数値で設定することができます。

sheet.row_dimensions[行番号].height = 高さ sheet.column_dimensions['列の文字'].width = 幅

import openpyxl

workbook = openpyxl.Workbook()
sheet = workbook.active

# A1セルにテキストを入力
sheet['A1'] = 'This is a tall row.'
# 1行目の高さを50に設定
sheet.row_dimensions[1].height = 50

# B2セルにテキストを入力
sheet['B2'] = 'This is a wide column.'
# B列の幅を30に設定
sheet.column_dimensions['B'].width = 30

workbook.save('dimensions_example.xlsx')
print("dimensions_example.xlsx を保存しました。")

セルの結合と解除

複数のセルを一つのセルとして結合したり、結合を解除したりすることができます。

sheet.merge_cells('範囲の文字列') 指定した範囲(例: 'A1:C3')のセルを結合します。値は範囲の左上のセルに書き込む必要があります。

sheet.unmerge_cells('範囲の文字列') 指定した範囲のセルの結合を解除します。

import openpyxl

workbook = openpyxl.Workbook()
sheet = workbook.active

# A1からD1までのセルを結合
sheet.merge_cells('A1:D1')
sheet['A1'] = 'Merged Title'

# C3からD4までのセルを結合
sheet.merge_cells('C3:D4')
sheet['C3'] = 'Another Merged Area'

# C3:D4の結合を解除
# sheet.unmerge_cells('C3:D4')

workbook.save('merge_example.xlsx')
print("merge_example.xlsx を保存しました。")

ウィンドウ枠の固定

sheet.freeze_panes属性にセルの座標を設定することで、そのセルの上と左にある行と列を固定できます。これにより、スクロールしてもヘッダー行などを常に表示させることができます。

  • sheet.freeze_panes = 'A2' : 1行目を固定します。
  • sheet.freeze_panes = 'B1' : A列を固定します。
  • sheet.freeze_panes = 'C2' : 1行目とA, B列を固定します。
  • sheet.freeze_panes = None または sheet.freeze_panes = 'A1' : 固定を解除します。
import openpyxl

# workbook = openpyxl.load_workbook('produceSales.xlsx') # 既存のファイルを読み込む場合
workbook = openpyxl.Workbook()
sheet = workbook.active

# サンプルデータを書き込む
for i in range(1, 31):
    sheet.cell(row=i, column=1).value = f"Row {i}"
    sheet.cell(row=1, column=i).value = f"Column {i}"

# 1行目(ヘッダー行)を固定
sheet.freeze_panes = 'A2'

workbook.save('freeze_example.xlsx')
print("freeze_example.xlsx を保存しました。")

このExcelファイルを開いて縦にスクロールすると、1行目が常に表示されたままになります。

まとめ

openpyxlは、データの読み書きだけでなく、Excelシートのレイアウトを調整するための豊富な機能も提供します。row_dimensionscolumn_dimensionsでセルのサイズを、merge_cellsunmerge_cellsでセルの結合を、そしてfreeze_panesでウィンドウ枠の固定を制御することで、プログラムから直接、見やすく整形されたスプレッドシートを作成することが可能です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次