Python

最終更新日: 2023.07.24 (公開: 2023.07.21)

【Python】OpenPyXLとは?OpenPyXLを使ってExcelを操作する方法を解説

【Python】OpenPyXLとは?OpenPyXLを使ってExcelを操作する方法を解説

Excelを操作するためのPythonライブラリ「OpenPyXL」の概要を解説します。加えて、OpenPyXLの操作方法やコードの書き方についても触れていきます。

本記事では、Excelを操作するためのPythonライブラリ「OpenPyXL」を解説します。OpenPyXLを使うことで、PythonからExcelファイルの作成・読み込みや、データの取得が可能です。OpenPyXLの勉強を始めようとしている方は、ぜひ読んで参考にしてください。

OpenPyXLとは?

OpenPyXLとは?

「OpenPyXL」は、「Python」からExcelを操作するためのPythonライブラリです。「OpenPyXL」を使うことで、「Python」でExcelファイルの作成やシートからのデータ取得・セルへのデータ書き込みなど、さまざまな操作がおこなえます。

Excelをソフトウェア上で操作する場合は、単純作業が多くなりがちです。しかし「OpenPyXL」を使えば、Excel操作の自動化で単純作業を大幅に軽減できます。

OpenPyXLをインストールする方法

OpenPyXLをインストールする方法

ここでは、OpenPyXLをインストールする方法として、以下の順で解説します。

  • Pythonをインストールしよう
  • Windowsではコマンドプロンプト、Macではターミナルを起動しよう

まず「OpenPyXL」をインストールする前に、「Python」をインストールしてください。その後コマンドプロンプトやターミナルなどのCUIを起動して、「OpenPyXL」のインストールをおこないましょう。

Pythonをインストールしよう

まず「Python」の公式サイトにアクセスして、サイトの「Download」へ移動し「Python」のインストーラーをダウンロードします。インストーラーはご自身の環境や任意のバージョンに合わせて、選択してください。

ダウンロードが完了したらインストーラーのファイルをダブルクリックして、インストールを開始します。

Pythonをインストール

引用:Download Python | Python.org

インストーラーファイルをダブルクリックすると、インストールの開始画面が表示されます。とくにこだわりが無ければ、「Install Now」を選択してください。また、「Add Python.exe to PATH」をチェックするのも忘れないようにしましょう。チェックを入れると、「Python」をインストールした後にPATHを自動で設定してもらえます。

インストールが完了したら、Windowsではコマンドプロンプトを、Macではターミナルを開いて、

python -version

または、

python -V(大文字のV)

を入力して実行してください。このときに「Python」のバージョンがCUI上に表示されれば、インストールは成功です。

Pythonインストール確認

Windowsではコマンドプロンプト、Macではターミナルを起動しよう

「Python」のインストールが完了したら、次はWindowではコマンドプロンプトを、Macではターミナルを起動して、

py -m pip install openpyxl

と入力してください。このコマンドを入力することで、「OpenPyXL」のインストールが開始されます。このとき、「OpenPyXL」の操作に必要な周辺ライブラリも一緒にインストールされます。

下図は正常にインストールされたときに表示されるメッセージ例です。

OpenPyXLインストール成功メッセージ例

もし、エラーや警告文が表示されてインストールがうまくいかない場合は、エラー文や警告文をそのままコピーして、Google検索しましょう。同じようなエラーに直面した人たちの書き込みや、エラーへの対処法が書かれたページを検索できます。それらのページを参考にしながら、再度トライしてください。

OpenPyXLでのPythonの使い方【作成・取得編】

OpenPyXLでのPythonの使い方【作成・取得編】

ここでは、「OpenPyXL」の使い方を解説します。この章では、以下の5点について解説します。

  • Excelファイルを作成してみよう
  • Excelファイルを読み込んでみよう
  • シートを取得してみよう
  • セル範囲の取得(セル記号・セル数値)をしてみよう
  • データを取得(行・列)してみよう

「OpenPyXL」操作の第一段階なので、しっかり理解してから次の段階へ進んでください。

Excelファイルを作成してみよう

まずは、「OpenPyXL」を用いたExcelファイルの作成方法について解説します。実際のソースコードを例にして見ていきましょう。

以下のコードは、「excel.xlsx」というExcelファイルを作成する例です。

import openpyxl
import glob

#ワークブックオブジェクト生成
wb = openpyxl.Workbook()
sheet=wb.active

#シート名を指定
sheet.title='sheet_1'
#Excelファイル保存
wb.save('excel.xlsx')
glob.glob('*.xlsx')

このコードを実行したときに、「excel.xlsx」というファイルが生成され、そのシート名が「sheet_1」となっていれば成功です。まずは上記のコードを実行して、Excelファイルを生成するところから始めましょう。

Excelファイルを読み込んでみよう

ここからは、既存のExcelファイルを読み込む方法について紹介します。

以下は、「excel.xlsx」というExcelファイルを読み込むコードの例です。

import openpyxl

file = 'excel.xlsx'

#Excelファイル読み込み
wb=openpyxl.load_workbook(file)

上記ソースコードの最終行でExcelファイルを読み込めば、さまざまな操作が可能になります。たとえば上記のソースコードであれば、インスタンス(openpyxlライブラリを使い、Excelファイルやシートを操作するためのオブジェクト)のwbを用います。そうすることで、wbが保持するさまざまなメソッドの呼び込みが可能です。よく使うメソッドの具体例は、以下のとおりです。

メソッド名 使用例 メソッド概要
active sheet = wb.active 現在アクティブなシート(ワークブックを開いたときに最初に表示されるシート)を参照する。
create_sheet wb.create_sheet(title=’NewSheet’, index=0) # 新しいシートを最初の位置に作成 新たなワークシートを作成する。titleパラメータでシート名を、indexパラメータでシートの位置を指定。
remove sheet = wb[‘Sheet1’]
wb.remove(sheet) # ‘Sheet1’を削除
指定したワークシートを削除する。

上記のソースコードの「file」部分は任意のファイル名が入るので、読み込みたいExcelファイル名を入力してください。

シートを取得してみよう

ここからは、Excelファイル中のシート情報を読み込む方法について解説します。

以下は「excel.xlsx」のExcelファイルに対して、「sheet_1」というシートを取得するコードの例です。

import openpyxl

wb=openpyxl.load_workbook('excel.xlsx')

ws=wb['sheet_1']

ここでは、取得した「sheet_1」のシート情報を、変数「ws」に格納しています。

上記のコードで取得したシート情報から、処理対象のインデックス番号を指定する例は、以下の通りです。

wi=wb.worksheets[0]

処理対象のワークシートを指定するとき、シート名での指定もできますが、「0」から始まるインデックス番号で指定することも可能です。ワークシート名をインデックス番号で指定するメリットは、シート名が分からなくても指定できることです。一方で、シートが移動された場合は、想定した処理をおこなえないデメリットがあります。それぞれの特徴を踏まえて使い分けてください。

上記のコードの場合、Excelファイルを読み込む際にインスタンス「wb」の中にある、メソッド「worksheets」を呼び出します。カッコ内にインデックスを取得することで、指定したワークシートの情報を入力できます。

セル範囲の取得(セル記号・セル数値)をしてみよう

ここからは、取得したファイルのシートから、セル範囲のデータを読み取る方法について紹介します。

「excel.xlsx」のExcelファイルに対して「sheet_1」というシートのインデックス0を取得し、「C2からH12」までのセル範囲のデータを取得するコードの例は以下の通りです。

import openpyxl

wb=openpyxl.load_workbook('excel.xlsx')
ws=wb.worksheets[0]

for i in ws['C2:H12']:
  l = []
  for j in i:
    l.append(j.value)
  print(l)

上記のコードでは、’Excel.xlsx’という名前のExcelファイルを読み込み、最初のワークシートを取得しています。次に、指定されたセル範囲(C2からH12)のデータを行ごとに処理し、’l’というリストに各セルの値を追加し、print(l)でデータを参照する方法を紹介します。

データを取得(行・列)してみよう

ここからは、特定のセルからデータを取得する方法について解説します。

「excel.xlsx」のExcelファイルの「sheet_1」シートを取得し、セル範囲を「C2からH12」と指定して、その範囲からセル「C10」のデータを取得するコードの例は以下の通りです。

import openpyxl

wb=openpyxl.('excel.xlsx'')
ws = wb.worksheets[0]

for i in ws['C2:H12']:
  l = []
  for j in i:
    l.append(j.value)

#1行目2列目を指定
print(l[0][1])

#3行目5列目を指定
print(l[2][4])

上記コードでリストlの添え字を変えるだけで、取得できるデータが変わります。取得したいデータによって、臨機応変に”l”の添え字を変えてみてください。

OpenPyXLでのPythonの使い方【書き込み編】

OpenPyXLでのPythonの使い方【書き込み編】

ここでは、次のステップとして、Excelファイルへの書き込み方法を解説します。具体的には、以下の4つです。

  • セル記号・セル数値を書き込んでみよう
  • 繰り返し処理をしてみよう
  • セルの結合と解除をしてみよう
  • グラフを作ってみよう

この段階が理解できれば、自由に「OpenPyXL」の操作ができるようになるので、しっかりと押さえておきましょう。

セル記号・セル数値を書き込んでみよう

まずは、「OpenPyXL」を用いたExcelファイルへのデータ書き込みについて解説します。実際のソースコードを例に見ていきましょう。

以下は、「excel.xlsx」というExcelファイルを読み込み、「sheet_1」というシートのセル「C1」に、実際の値を書き込むコードの例です。

import openpyxl

wb=openpyxl.load_workbook('excel.xlsx')
ws=wb['sheet_1']

ws['C1'] = 1

上記のコードでは、セル「C1」に1を代入しています。ただし、上記処理では保存されないため、保存する場合はコード末尾に以下のコードを追加してください。

wb.save('excel.xlsx')

また、別の書き方として、以下のようにcellsメソッドを使う方法があります。

ws.cell(row=1, column=1).value=1

上記のコードでは、1行目1列目に1を代入しています。

繰り返し処理をしてみよう

ここでは、「OpenPyXL」を用いた繰り返し処理について、以下の4つ解説します。

  • 列でループ
  • 列で二重ループ
  • 行でループ
  • 行で二重ループ

以下のコードは、列でループする記述例です。

import openpyxl

wb=openpyxl.load_workbook('excel.xlsx')
ws=wb['sheet_1']

for i in ws.iter_cols():
  for j in i:
    print(j.value)

次のコードは、列で二重ループする例です。

import openpyxl

wb=openpyxl.load_workbook('excel.xlsx')
ws=wb['sheet_1']

sheet_max_row=ws.max_row
sheet_max_col=ws.max_column

for i in range(1, sheet_max_col+1):
  for j in range(1, sheet_max_row+1):
    print(ws.cell(row=j, column=i).value)

次のコードは、行でループする例になります。

import openpyxl

# Excel ファイルを開く
wb = openpyxl.load_workbook('excel.xlsx')

# 特定のシートを選択する
ws = wb['sheet_1']

# シートの各行に対してループ処理をおこなう
for row in ws.iter_rows():
    # 各セルに対してループ処理をおこなう
    for cell in row:
        # セルの値を表示する
        print(cell.value)

# ワークブックを閉じる (とくに変更を保存する必要はありませんが、リソースを解放するために閉じる習慣をつけてください)
wb.close()

行で二重ループするコードの例は、以下の通りです。

import openpyxl

# Excel ファイルを開く
wb = openpyxl.load_workbook('excel.xlsx')

# 特定のシートを選択する
ws = wb['sheet_1']

# シートの最大行数と最大列数を取得する
sheet_max_row = ws.max_row
sheet_max_col = ws.max_column

# 各行のデータが格納されるリストを作成する
sheet_data = []

# シートの各行に対してループ処理をおこなう
for i in range(1, sheet_max_row + 1):
    row_data = []
    # 各列に対してループ処理をおこなう
    for j in range(1, sheet_max_col + 1):
        # セルの値を取得し、行データに追加する
        row_data.append(ws.cell(row=i, column=j).value)
    # 行データをシートデータに追加する
    sheet_data.append(row_data)

# シートデータを表示する
print(sheet_data)

# ワークブックを閉じる (とくに変更を保存する必要はありませんが、リソースを解放するために閉じる習慣をつけてください)
wb.close()

セルの結合と解除をしてみよう

次は、Excelファイルのセル結合と解除方法を解説します。

「excel.xlsx」というExcelファイルを読み込み、「sheet_1」というシートのセル「C1:H12」の範囲で結合させるコードの例は以下の通りです。

import openpyxl

wb=openpyxl.load_workbook('excel.xlsx')
ws=wb['sheet_1']


ws.merge_cells('C1:H12')
# 保存して結合されたセルを反映させる
wb.save('excel.xlsx')
wb.close()

次は、先ほど結合したセルを解除するコードの例です。

import openpyxl

wb=openpyxl.load_workbook('excel.xlsx')
ws=wb['sheet_1']

ws.unmerge_cells('C1:H12')

# 保存してセルの結合解除を反映させる
wb.save('excel.xlsx')
wb.close()

グラフを作ってみよう

ここからは、Excelファイル上にグラフを描画する方法について解説します。

単純な棒グラフを書き込むコードの例は、以下の通りです。

import openpyxl
from openpyxl.chart import BarChart, Reference

# Excel ファイルを開く
wb = openpyxl.load_workbook('excel.xlsx')
ws = wb['sheet_1']

# チャートのデータ範囲を指定する
data = Reference(ws, min_col=1, min_row=1, max_col=2, max_row=10)

# チャートを作成する
chart = BarChart()
chart.add_data(data)

# チャートをシートに追加する
ws.add_chart(chart, 'C1')

# 保存してチャートを反映させる
wb.save('excel_with_chart.xlsx')

これは、棒グラフを簡単に表示する例ですが、「BarChart」部分を変えるとグラフの種類を変えられます。他にも、軸やタイトルなどのグラフの詳細も設定が可能です。グラフおよびコードの例は、以下のとおりです。

グラフ名 使用例 グラフ概要
BarChart from openpyxl.chart import BarChart, Reference
chart = BarChart()
data = Reference(ws, min_col=1, min_row=1, max_col=2, max_row=10)
chart.add_data(data)
ws.add_chart(chart, ‘C1’)
棒グラフ。
数値データを棒の長さで表現。
LineChart from openpyxl.chart import LineChart, Reference
chart = LineChart()
data = Reference(ws, min_col=1, min_row=1, max_col=2, max_row=10)
chart.add_data(data)
ws.add_chart(chart, ‘C1’)
折れ線グラフ。
数値の変動を直線の流れで表現。
PieChart from openpyxl.chart import PieChart, Reference
chart = PieChart()
data = Reference(ws, min_col=1, min_row=1, max_col=2, max_row=10)
chart.add_data(data)
ws.add_chart(chart, ‘C1’)
円グラフ。
全体に対する比率を扇形で表現。
AreaChart from openpyxl.chart import AreaChart, Reference
chart = AreaChart()
data = Reference(ws, min_col=1, min_row=1, max_col=2, max_row=10)
chart.add_data(data)
ws.add_chart(chart, ‘C1’)
面積グラフ。
数値の変動を面積で表現。
ScatterChart from openpyxl.chart import ScatterChart, Reference, Series
chart = ScatterChart()
xvalues = Reference(ws, min_col=1, min_row=1, max_row=10)
yvalues = Reference(ws, min_col=2, min_row=1, max_row=10)
series = Series(values=yvalues, xvalues=xvalues)
chart.series.append(series)
ws.add_chart(chart, ‘C1’)
散布図。
2つの数値の関係性を点で表現。

上記の例における変数の概要は、以下のとおりです。

ws Referenceが参照する対象のワークシートを指定する。
この例では、変数wsが指すワークシートが参照対象。
min_col 参照するデータ範囲の最小の列番号を指定する。
列番号は1から始まるため、min_col=1は最初の列(”A”列)を意味する。
min_row 参照するデータ範囲の最小の行番号を指定する。
行番号は1から始まるため、min_row=1は最初の行を意味する。
max_col 参照するデータ範囲の最大の列番号を指定する。
max_col=のとき、2列目(”B”列)までのデータが参照範囲となる。
max_row 参照するデータ範囲の最大の行番号を指定する。
max_row=10のとき、10行目までのデータが参照範囲となる。

どのようなグラフを表示できるか、またどのような表示設定が可能かを知りたい方は、リファレンスの閲覧をおすすめします。

OpenPyXLを使ってExcel業務を自動化させよう

本記事ではExcelを操作するためのPythonライブラリ「OpenPyXL」の概要や、OpenPyXLの活用例を解説しました。「OpenPyXL」を用いれば、単純作業が多くて面倒なExcel業務を自動化して、業務時間を短縮できます。

ぜひ、「OpenPyXL」を活用して、「Python」でExcel業務が自動化するプログラムを組んでみてください。

アクセスランキング 人気のある記事をピックアップ!

    コードカキタイがオススメする記事!

    1. 子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      2024.06.17

      子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      #プログラミングスクール

    2. 【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      2022.01.06

      【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      #プログラミングスクール

    3. 【未経験でも転職可】30代におすすめプログラミングスクール8選!

      2024.01.26

      【未経験でも転職可】30代におすすめプログラミングスクール8選!

      #プログラミングスクール

    4. 初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      2024.01.26

      初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      #JAVA

    5. 忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      2024.01.26

      忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      #プログラミングスクール

    1. 【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      2022.01.06

      【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      #プログラミングスクール

    2. 【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      2024.01.26

      【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      #プログラミングスクール

    3. 【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    4. 【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    5. 【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      2024.01.26

      【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      #プログラミングスクール