Excelを操作するためのPythonライブラリ「OpenPyXL」の概要を解説します。加えて、OpenPyXLの操作方法やコードの書き方についても触れていきます。
本記事では、Excelを操作するためのPythonライブラリ「OpenPyXL」を解説します。OpenPyXLを使うことで、PythonからExcelファイルの作成・読み込みや、データの取得が可能です。OpenPyXLの勉強を始めようとしている方は、ぜひ読んで参考にしてください。
目次
「OpenPyXL」は、「Python」からExcelを操作するためのPythonライブラリです。「OpenPyXL」を使うことで、「Python」でExcelファイルの作成やシートからのデータ取得・セルへのデータ書き込みなど、さまざまな操作がおこなえます。
Excelをソフトウェア上で操作する場合は、単純作業が多くなりがちです。しかし「OpenPyXL」を使えば、Excel操作の自動化で単純作業を大幅に軽減できます。
ここでは、OpenPyXLをインストールする方法として、以下の順で解説します。
まず「OpenPyXL」をインストールする前に、「Python」をインストールしてください。その後コマンドプロンプトやターミナルなどのCUIを起動して、「OpenPyXL」のインストールをおこないましょう。
まず「Python」の公式サイトにアクセスして、サイトの「Download」へ移動し「Python」のインストーラーをダウンロードします。インストーラーはご自身の環境や任意のバージョンに合わせて、選択してください。
ダウンロードが完了したらインストーラーのファイルをダブルクリックして、インストールを開始します。
引用:Download Python | Python.org
インストーラーファイルをダブルクリックすると、インストールの開始画面が表示されます。とくにこだわりが無ければ、「Install Now」を選択してください。また、「Add Python.exe to PATH」をチェックするのも忘れないようにしましょう。チェックを入れると、「Python」をインストールした後にPATHを自動で設定してもらえます。
インストールが完了したら、Windowsではコマンドプロンプトを、Macではターミナルを開いて、
python -version
または、
python -V(大文字のV)
を入力して実行してください。このときに「Python」のバージョンがCUI上に表示されれば、インストールは成功です。
「Python」のインストールが完了したら、次はWindowではコマンドプロンプトを、Macではターミナルを起動して、
py -m pip install openpyxl
と入力してください。このコマンドを入力することで、「OpenPyXL」のインストールが開始されます。このとき、「OpenPyXL」の操作に必要な周辺ライブラリも一緒にインストールされます。
下図は正常にインストールされたときに表示されるメッセージ例です。
もし、エラーや警告文が表示されてインストールがうまくいかない場合は、エラー文や警告文をそのままコピーして、Google検索しましょう。同じようなエラーに直面した人たちの書き込みや、エラーへの対処法が書かれたページを検索できます。それらのページを参考にしながら、再度トライしてください。
ここでは、「OpenPyXL」の使い方を解説します。この章では、以下の5点について解説します。
「OpenPyXL」操作の第一段階なので、しっかり理解してから次の段階へ進んでください。
まずは、「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.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”の添え字を変えてみてください。
ここでは、次のステップとして、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行目までのデータが参照範囲となる。 |
どのようなグラフを表示できるか、またどのような表示設定が可能かを知りたい方は、リファレンスの閲覧をおすすめします。
本記事ではExcelを操作するためのPythonライブラリ「OpenPyXL」の概要や、OpenPyXLの活用例を解説しました。「OpenPyXL」を用いれば、単純作業が多くて面倒なExcel業務を自動化して、業務時間を短縮できます。
ぜひ、「OpenPyXL」を活用して、「Python」でExcel業務が自動化するプログラムを組んでみてください。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール