openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】

Excel業務の自動化をPythonで行うなら、まず押さえておきたいのが openpyxl です。
openpyxlは、Excelファイル(.xlsx)をPythonから直接読み書き・編集・装飾・グラフ作成まで行える強力なライブラリです。
しかし「関数やメソッドが多すぎて、どれを使えばいいのか分からない…」という方も多いのではないでしょうか。
この記事では、openpyxlでよく使う関数・メソッド・クラスを体系的に一覧化し、
業務自動化に直結する機能をわかりやすくまとめました。
ぜひこの記事をブックマークしてお役立てください。

openpyxl主要クラス一覧(概要+主な使い方)
openpyxlは、Excelブックの構造を「クラス(class)」として扱うことで、PythonからExcelを自在に操作できるように設計されています。
業務自動化でopenpyxlを使う場合、まず理解しておきたいのが「どのクラスがどのレベル(階層)でExcelを操作するのか」という全体構造です。
openpyxlのクラス階層(全体マップ)
Workbook ──┬─ Worksheet ──┬─ Cell
│ └─ Style (Font / Fill / Alignment / Border ...)
├─ Chart (BarChart / LineChart / Reference ...)
├─ DataValidation
└─ NamedStyle / Utils / Formula などWorkbook:Excelファイル全体Worksheet:各シートCell:シート内の各セル
この階層を理解すると、openpyxlの全ての操作がどこに属するかが明確になります。
主要クラス一覧表|概要と主な使い方
| クラス名 | 概要 | 主な使い方(import例) |
|---|---|---|
Workbook | 新しいExcelファイル全体を作成・保存するクラス。 | from openpyxl import Workbook → wb = Workbook() |
Worksheet | 各シートを表すクラス。セル操作や行列操作の中心。 | ws = wb.active / ws = wb["Sheet1"] |
Cell | 個々のセルを表すクラス。値や書式設定を扱う。 | cell = ws.cell(row=2, column=3) |
Font, Alignment, PatternFill, Border, NamedStyle | 書式設定やスタイルを管理するクラス群。 | from openpyxl.styles import Font, Alignment, PatternFill |
load_workbook() | 既存のExcelファイルを読み込む関数。 | from openpyxl import load_workbook → wb = load_workbook("data.xlsx") |
Chart, Reference, Series | グラフ生成・データ範囲指定を行うクラス群。 | from openpyxl.chart import BarChart, Reference |
DataValidation | 入力規則(プルダウン等)を設定するクラス。 | from openpyxl.worksheet.datavalidation import DataValidation |
openpyxl.utils | 列名や座標変換などの便利関数をまとめたモジュール。 | from openpyxl.utils import get_column_letter |
補足:業務自動化で特に頻出の3大クラス
- Workbook – ファイル作成・保存・シート管理
- Worksheet – シート内データ操作の中心
- Cell – 値・フォーマット・コメント・数式の操作
この3つを理解すれば、ほとんどのExcel自動化タスクをカバーできます。
その後に「書式設定」「グラフ」「検証」などを覚えると、より高度な自動化が可能になります。
Workbookクラスの使い方と主なメソッド一覧
Workbook クラスは、openpyxlでExcelブック(.xlsxファイル)全体を管理する中心的なクラスです。
Excelファイルの新規作成・保存・シート操作などは、すべてこのクラスを通じて行われます。
業務自動化では、まずこの Workbook を使って「ファイルを開く/作る/保存する」ことから始まります。
Workbookクラスの基本構文
from openpyxl import Workbook
# 新しいExcelファイルを作成
wb = Workbook()
# 現在アクティブなシートを取得
ws = wb.active
ws.title = "レポート"
# 保存
wb.save("report.xlsx")Workbook()は「新規作成用」- 既存ファイルを開く場合は
load_workbook()を使う(別章で紹介)
よく使うメソッド一覧
| メソッド名 | 説明 | 使用例 |
|---|---|---|
.save(filename) | Excelブックを指定ファイル名で保存する | wb.save("output.xlsx") |
.create_sheet(title=None, index=None) | 新しいシートを追加する | wb.create_sheet("データ", 0) |
.remove(sheet) | 指定シートを削除する | wb.remove(wb["Sheet"]) |
.copy_worksheet(sheet) | シートをコピーする | ws_copy = wb.copy_worksheet(ws) |
.worksheets | 全シートのリストを取得 | for ws in wb.worksheets: |
.active | 現在アクティブなシートを取得 | ws = wb.active |
.sheetnames | シート名の一覧を取得 | print(wb.sheetnames) |
コード例:複数シートをまとめて作成する
from openpyxl import Workbook
wb = Workbook()
# 既定のシートを削除
default_sheet = wb.active
wb.remove(default_sheet)
# 新しいシートを複数作成
for month in ["1月", "2月", "3月"]:
ws = wb.create_sheet(title=f"{month}_売上")
ws["A1"] = "日付"
ws["B1"] = "売上"
# シート名の一覧を確認
print(wb.sheetnames) # ['1月_売上', '2月_売上', '3月_売上']
# 保存
wb.save("sales_report.xlsx")- デフォルトで「Sheet」という空シートが1つ作成されるので、不要なら削除
.create_sheet()の第2引数でシートの挿入位置を制御可能
Workbookクラスのまとめ
Workbook()→ 新規ブック作成.save()→ 保存.create_sheet()/.remove()→ シート管理.sheetnames/.active→ シート情報取得
Worksheetクラスの使い方と主なメソッド一覧
Worksheet クラスは、Excelファイル内の1枚のシートを表します。
データの書き込み・読み取り・行列操作・セル結合・シート名変更など、実際の自動化スクリプトで最も頻繁に使われるクラスです。
Worksheetクラスの基本構文
from openpyxl import Workbook
wb = Workbook()
ws = wb.active # アクティブシートを取得
ws.title = "売上データ"
# セルに値を入力
ws["A1"] = "商品名"
ws["B1"] = "売上"
# 保存
wb.save("sample.xlsx")Workbook.activeで現在のシートを取得Workbook["シート名"]で既存シートを指定取得可能
よく使うメソッド一覧
| メソッド/プロパティ | 説明 | 使用例 |
|---|---|---|
.cell(row, column, value=None) | 指定セルを取得/値設定 | ws.cell(row=2, column=3, value=100) |
.append(iterable) | 行末にデータを追加 | ws.append(["A001", "商品A", 5000]) |
.iter_rows() / .iter_cols() | 行・列単位で繰り返し処理 | for row in ws.iter_rows(values_only=True): |
.max_row / .max_column | 最終行・最終列の番号を取得 | print(ws.max_row) |
.merge_cells(range_string) | セルを結合 | ws.merge_cells("A1:C1") |
.unmerge_cells(range_string) | 結合を解除 | ws.unmerge_cells("A1:C1") |
.delete_rows(idx, amount=1) | 指定行を削除 | ws.delete_rows(3) |
.insert_rows(idx, amount=1) | 行を挿入 | ws.insert_rows(5, 2) |
.delete_cols(idx, amount=1) | 列を削除 | ws.delete_cols(2) |
.insert_cols(idx, amount=1) | 列を挿入 | ws.insert_cols(1, 2) |
.title | シート名の取得/変更 | ws.title = "売上2025" |
コード例:セル結合と書式設定
from openpyxl import Workbook
from openpyxl.styles import Alignment
wb = Workbook()
ws = wb.active
# タイトル行を結合
ws.merge_cells("A1:C1")
ws["A1"] = "月次売上レポート"
ws["A1"].alignment = Alignment(horizontal="center", vertical="center")
wb.save("merged.xlsx")
.merge_cells()でセル結合.alignmentで中央揃えを指定
Worksheetクラスのまとめ
Worksheetは「シート内の処理すべて」の中心クラス.cell()・.append()・.iter_rows()が基本操作の三本柱- 行・列操作や結合も自在に行える
Cellクラスの使い方と主なメソッド一覧
Cell クラスは、Excelシート上の1つのセルを表すクラスです。
セルの値を取得・変更するだけでなく、フォントや背景色、数値の書式設定、コメントや数式なども扱えます。
業務自動化の中で「セルごとの細かい調整」を行う際に、最も多用されるクラスです。
Cellクラスの基本構文
from openpyxl import Workbook wb = Workbook() ws = wb.active # セルの取得方法(行・列指定) cell = ws.cell(row=1, column=1) # 値の設定 cell.value = "商品名" # 値の取得 print(cell.value) # → 商品名
ws.cell(row, column)でCellオブジェクトを取得- セルの内容は
.valueで読み書き可能
よく使うプロパティ・メソッド一覧
| プロパティ/メソッド名 | 説明 | 使用例 |
|---|---|---|
.value | セルの値を取得・設定 | ws["A1"].value = "テキスト" |
.coordinate | セルの座標(例:”B2″)を取得 | print(ws["B2"].coordinate) |
.row, .column | 行番号・列番号を取得 | print(ws["B2"].row) |
.number_format | 表示形式(書式)を設定 | cell.number_format = "#,##0" |
.font | フォント設定(太字・色など) | cell.font = Font(bold=True, color="FF0000") |
.fill | 背景色を設定 | cell.fill = PatternFill("solid", fgColor="FFFF99") |
.alignment | 配置(中央・右寄せなど) | cell.alignment = Alignment(horizontal="center") |
.border | 枠線を設定 | cell.border = Border(left=Side(style="thin")) |
.comment | コメントを設定 | cell.comment = Comment("確認済み", "山田") |
.hyperlink | ハイパーリンクを設定 | cell.hyperlink = "https://example.com" |
.data_type | セルのデータ型を確認 | print(cell.data_type) |
コード例:セルの値とフォーマットを設定
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
ws = wb.active
# タイトル行
cell = ws["A1"]
cell.value = "売上金額"
cell.font = Font(bold=True, color="FFFFFF")
cell.fill = PatternFill("solid", fgColor="4F81BD")
cell.alignment = Alignment(horizontal="center")
# 数値データ
ws["A2"] = 1234567
ws["A2"].number_format = "#,##0円"
wb.save("cell_format.xlsx").Fontと.PatternFillを組み合わせると見栄えが整う.number_formatで単位や桁区切りを簡単に設定できる
Cellクラスのまとめ
CellはExcel操作の最小単位で、値・書式・コメントを司る.value,.font,.fill,.alignmentが基本操作の核.number_formatや.commentを活用すると「業務用レベルの整形」が可能
書式設定関連クラス(Font / Alignment / PatternFill / Border / NamedStyle)
Excelの業務自動化では、単にデータを出力するだけでなく、「見やすいフォーマットで整形する」ことが非常に重要です。
openpyxlでは、openpyxl.styles モジュールを使って、フォント・位置・色・罫線などを細かく指定できます。
書式設定関連の主なクラス一覧
| クラス名 | 概要 | 主な役割 |
|---|---|---|
Font | フォント(文字)スタイル設定 | 太字、斜体、サイズ、フォント名、色など |
Alignment | 文字の位置揃え | 水平方向・垂直方向・折り返し設定など |
PatternFill | セルの背景色設定 | 塗りつぶし色やパターン指定 |
Border / Side | セル枠線設定 | 線の太さ・色・位置指定 |
NamedStyle | 書式をまとめて定義・再利用 | スタイルテンプレートを適用可能 |
Fontクラスのパラメータ一覧(フォント設定)
| パラメータ | 説明 | 例 |
|---|---|---|
name | フォント名 | "Meiryo", "Arial" |
size | 文字サイズ | Font(size=14) |
bold | 太字 | Font(bold=True) |
italic | 斜体 | Font(italic=True) |
color | 文字色(16進) | Font(color="FF0000") |
from openpyxl.styles import Font ws["A1"].font = Font(name="Meiryo", bold=True, color="FFFFFF", size=12)
Alignmentクラスのパラメータ一覧(配置設定)
| パラメータ | 説明 | 例 |
|---|---|---|
horizontal | 水平方向の配置 | "center", "left", "right" |
vertical | 垂直方向の配置 | "center", "top", "bottom" |
wrap_text | 折り返し表示 | True |
shrink_to_fit | セル内に自動で収まるよう縮小 | True |
from openpyxl.styles import Alignment ws["A1"].alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
PatternFillクラスのパラメータ一覧(背景色設定)
| パラメータ | 説明 | 例 |
|---|---|---|
fill_type | 塗りつぶしの種類 | "solid"(単色) |
fgColor | 前景色(背景色) | "FFFF00"(黄色) |
from openpyxl.styles import PatternFill ws["A1"].fill = PatternFill(fill_type="solid", fgColor="4F81BD")
Border / Sideクラスのパラメータ一覧(枠線設定)
| 要素 | 説明 | 使用例 |
|---|---|---|
Side(style, color) | 枠線のスタイル・色を指定 | Side(style="thin", color="000000") |
Border(left, right, top, bottom) | 各辺の枠線を設定 | Border(left=side, right=side) |
from openpyxl.styles import Border, Side side = Side(style="thin", color="000000") ws["A1"].border = Border(left=side, right=side, top=side, bottom=side)
グラフ関連クラス(Chart / Reference / Series)
openpyxlでは、Excel上に棒グラフ・折れ線グラフ・円グラフなどをPythonで直接作成できます。
グラフ生成の要となるのが、Chart クラスとその関連クラスです。
主に使用するのは以下の3つです↓↓
| クラス名 | 役割 | 主なモジュール |
|---|---|---|
Chart( BarChart, LineChart, PieChart) | グラフの種類を定義 | openpyxl.chart |
Reference | グラフのデータ範囲を指定 | openpyxl.chart |
Series | データ系列(凡例・色・タイトル)を設定 | openpyxl.chart.series |
- グラフ関連クラスは
openpyxl.chartモジュールで提供 - 基本構成は「
Referenceで範囲指定 →Chart生成 →add_data()→add_chart()」 - 実務では棒グラフ(BarChart)と折れ線(LineChart)が最頻出
その他便利関数(openpyxl.utils など)
openpyxlには、セルや列の座標・文字列操作を簡単に行うためのユーティリティ関数が多数用意されています。
とくに openpyxl.utils モジュールには、列番号 ↔ 列名変換やセル番地解析といった便利関数がそろっています。
業務自動化スクリプトでは「動的にセルを指定する」「列名を計算で求める」などの場面でよく登場します。
主なユーティリティ関数一覧
| 関数名 | 説明 | 使用例 |
|---|---|---|
get_column_letter(idx) | 列番号を列名(A, B, C…)に変換 | get_column_letter(3) → 'C' |
column_index_from_string(col) | 列名を列番号に変換 | column_index_from_string('C') → 3 |
coordinate_from_string(cell) | セル番地を行・列に分解 | coordinate_from_string('B12') → ('B', 12) |
range_boundaries(range_string) | 範囲文字列を分解して座標取得 | range_boundaries('A1:C3') → (1, 1, 3, 3) |
quote_sheetname(name) | シート名を安全にエスケープ | quote_sheetname('月次レポート') → '月次レポート' |
absolute_coordinate(coord) | 相対座標を絶対参照形式に変換 | absolute_coordinate('B2') → '$B$2' |
コード例:列番号と列名の変換
from openpyxl.utils import get_column_letter, column_index_from_string
# 列番号 → 列名
print(get_column_letter(1)) # A
print(get_column_letter(27)) # AA
# 列名 → 列番号
print(column_index_from_string("A")) # 1
print(column_index_from_string("AA")) # 27- Excel列のインデックス処理に必須。
- ループなどで列を自動的に増やす際に重宝する。
その他便利関数のまとめ
openpyxl.utilsは「座標・列名・範囲操作」を便利にする補助モジュール- 主要関数:
get_column_letter()/column_index_from_string()/range_boundaries() - 数式生成・動的範囲指定・グラフ自動化などで大活躍
まとめ
ここまで、openpyxlで業務自動化を行うために知っておくべき主要クラス・関数・メソッドを体系的に紹介してきました。
Excel操作の自動化は、一見すると難しそうに見えますが、openpyxlの構造を理解すれば「人がExcelでやる操作」をすべてPythonで再現できるようになります。
Excel業務は「人が入力・整形・保存を繰り返す」定型作業の宝庫です。openpyxlを使えば、それらを正確かつ美しく自動化できます。
一度仕組みを作ってしまえば、翌月以降はスクリプトを実行するだけでレポートが完成します。
あなたの時間を奪っていたExcel作業を、今日からPythonに任せてみましょう。
