PythonでExcelファイルを読み込み、編集して書き込む【OpenPyXL】

こんなこと、やります。

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

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

はじめに

OpenPyXlとは
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をインストールします。

shell
$ pip3 install openpyxl

OpenPyXLの公式チュートリアルはこちら。 Tutorial — openpyxl 3.0.5 documentation

Pythonで表データを扱うには、pandasというライブラリもあります。pandasの使い方は Excelなどの表データをゴリゴリ加工する【Python x Pandas】 に書きました。

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

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

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

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

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

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

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

ワークシートを選択する

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

py
ws = wb["alink"]

セルの値を取得する

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

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

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

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

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

Excelファイルを読み込む

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

py
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ファイルを新規に作成できます。

py
wb = openpyxl.Workbook()

Excelファイルの保存する

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

py
wb.save("sample.xlsx")

シートを追加する

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

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

セルにデータを書き込む

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

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

Excelファイルに書き込む

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

py
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では、数式を追加したり、色を操作できたり色々な機能が存在します。詳しくは 公式ドキュメント や書籍をご覧ください。

関連記事

 
最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

Python学習にオススメの本をご紹介!
Pandasでデータサイエンスはじめよう!
スクレイピングにオススメの書籍

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