PythonからExcelの読み込み、書き込み〜OpenPyXLの使い方・基本操作を解説します〜

 

こんなこと、やります。

  • PythonでExcelのセルへ書き込み
  • PythonでExcelのセルを読み込み
  • OpenPyXLの基本的な使い方を解説

PythonでExcelを管理しよう!読み込み、書き込み、OpenPyXLの基本操作
PythonでExcelを管理しよう!読み込み、書き込み、OpenPyXLの基本操作

はじめに

OpenPyXlとは

OpenPyXLとは、PythonでExcelファイルの読み書きを可能にしてくれるライブラリです。

OpenPyXLを使えば、とても手軽にカンタンにExcelデータをPythonで扱えるようになります。Excelマクロや関数が苦手な方でも、Pythonが得意であればOpenPyXLを使うと作業効率がアップすると思います。何より好きなエディタを使ってプログラミングできるのは楽しいですよ。Visual Studio Codeでも、PyCharmでも、お好きなエディタをお使いください (^_^)

OpenPyXLのオススメ書籍

こちらの「PythonでExcel、メール、Webを自動化する本」では、openpyxlによるブック、シートのデータのマージ処理などのサンプルコードが詳しく書かれています。本記事と合わせてご参考になさってみてください。

OpenPyXLのインストール

本記事のプログラムは、macOSで動かし、Python3を使っていきます。

まずは、pip3を使ってopenpyxlをインストールします。

$ pip3 install openpyxl

OpenPyXLの公式チュートリアルはこちら。

Pythonで表データを扱うには、pandasというライブラリもあります。pandasの使い方はPythonでデータ解析・pandasの使い方に書きましたのでご参考になさってみてください。

OpenPyXLでExcelファイルを読み込む

それではまず、OpenPyXLを使ってPythonからExcelファイルのデータを読み込んでみます。ライブラリを使う時は import openpyxl で読み込んでおきます。

ファイル名をitems.xlsxとし、次の画像のようなデータのExcelファイルを用意しました。

Pythonで読み込むExcelデータ
Pythonで読み込むExcelデータ

Excelファイル(.xlsx)を読み込む

次の関数でExcelファイル(.xlsx)を読み込み、Excelデータを辞書化します。

wb = openpyxl.load_workbook("items.xlsx")

ワークシートを選択する

ワークシートを選択するには、辞書配列のキーにワークシート名を入れます。

ws = wb["alink"]

セルの値を取得する

セルにアクセスするには次のようにして、1行1行ループを回し、列を指定して値を取り出します。

for row in ws.rows:
    print(row[0].value)
    print(row[1].value)
    print(row[2].value)

数式の結果の値を読み込む

ここまで紹介したプログラムでは、セルに数式が入っていると数式そのものをデータとして取得してしまいます。数式の計算結果をデータとして取得したい場合は、 data_only=True を指定します。

wb = openpyxl.load_workbook("items.xlsx", data_only=True)

Excelファイルを読み込む

ここで、Excelファイルを読み込む一連の流れのプログラム例を紹介します。OpenPyXLを使うことで、次のようにカンタンにExcelデータへアクセスできます。

items = {}
path = "items.xlsx"

wb = openpyxl.load_workbook(path)
ws = wb["alink"]

for row in ws.rows:
    items[row[0].value] = {'Title': row[1].value, 'URL': row[2].value}

OpenPyXLでExcelファイルへ書き込む

OpenPyXLでExcelファイルの読み込みを紹介してきました。今度は、OpenPyXLでExcelファイルへ書き込む方法をご紹介します。

Excelファイルの新規作成する

次の関数で、Excelファイルを新規に作成できます。

wb = openpyxl.Workbook()

Excelファイルの保存する

新規作成したExcelファイルを、ファイル名を付けて保存します。

wb.save("sample.xlsx")

シートを追加する

Excelオブジェクトにシート名を付けてシートを追加します。

ws = wb.create_sheet(title="Hello")

セルにデータを書き込む

シートのセルにデータを書き込みます。次のようにして、セル番号を指定し、値を設定します。

c1 = ws.cell(row=1, column=1)
c1.value = "Hello world!"

Excelファイルに書き込む

Excelファイルに書き込むプログラム例を紹介します。プログラムを実行すると「Hello」の名前のシートが追加され、そこへリストで指定した文字が書き込まれます。

def write():
    wb = openpyxl.Workbook()

    ws = wb.create_sheet(title='Hello')
    list = ['hoge', 'huga', 'pico']

    for i, data in enumerate(list):
        row = i + 1
        c = ws.cell(row=row, column=1)
        c.value = data

    wb.save("sample.xlsx")

PythonからExcelにデータを書き込む
PythonからExcelにデータを書き込む

以上、OpenPyXLのカンタンな使い方を説明しました。OpenPyXLでは、数式を追加したり、色を操作できたり色々な機能が存在します。詳しくは 公式ドキュメント や書籍などをご参考になさってみてください。

記事に関するご質問などがあれば、
@tosisico または お問い合わせ までご連絡ください。
スクレイピングにオススメの書籍

▼ Beautiful Soup4を使ったWebクローリングをはじめ、表データをpandasやOpenPyXL、matplotでデータ解析、グラフ表示などのスクレイピングのやり方が分かりやすく説明されています。図解が多いのでPython初心者の方でも読み進められる内容となってます。

関連記事