python|openpyxlでExcelのセル値を取得【解説】

こんにちは!

Excelを自動で操作してみたい!

手作業の仕事を効率化してみたい!

と考えている方は多いと思います。そんな時に役立つのがopenpyxlというライブラリです。

この記事ではpythonのopenpyxlを使ってセルの値を取得する方法について解説します。

目次

openpyxlについて・基本操作

openpyxlは、pythonでxlsx形式のエクセルファイルを操作するために使うライブラリです。

データ分析などにpythonを使用するときによく利用されるライブラリです。

openpyxlで出来ること
  • エクセルファイルの読み込み
  • エクセルファイルの編集
  • エクセルファイルの保存

openpyxlのインストール

openpyxlは外部ライブラリであるため、pythonには標準でインストールされていません
そのためopenpyxlを利用するためにはインストールする必要があります。

以下の手順でインストールしましょう。

pip install openpyxl

ターミナルで上記コマンドを実行するとopenpyxlをインストールすることができます。
インストールにはpythonのパッケージマネージャーであるpipを使用しました。
pipはpythonをインストールしたときに一緒にインストールされていると思います。

ワークブック(エクセルファイル)の開き方

エクセルファイルはワークブックとして扱われます。
以下のコードでopenpyxlを使ってワークブックを開くことができます。

from openpyxl import load_workbook
wb = load_workbook('example.xlsx')

load_workbook()がワークブックを開く関数です。

ワークシート(エクセルのシート)の選択

ワークブック内の特定のシートを選択することができます。

ws = wb['Sheet1']

wbはload_workbook()で開いたワークブックです。開いたワークブックの特定のシートをwsに指定しています。

セルの値を取得する

ここから少し実践的な内容を解説していきます。まずはセルの値の取得方法です。

value = ws['A1'].value
print(value)

上記コードではwsというシートのA1セルの値を取得しvalueという変数に格納しています。

複数セルの値の取得

特定のセルだけでなく、複数のセルの値を取得することもできます。
複数セルの値を取得するには行や列をイテレート(繰り返し)する方法セルの範囲を指定する方法があります。
一つずつ見ていきましょう。

行や列のイテレートで複数セルの値を取得する

iter_row()メソッドやtier_cols()メソッドを使用して特定の行や列をイテレートします。

for row in ws.iter_rows(min_row=1, max_row=2, min_col=1, max_col=3):
    for cell in row:
        print(cell.value)

上記の例ではrowは1行目から2行目を指定、colは1列目(A列)から3列目(C列)を指定しています。
なので上記コードはセルA1, B1, C1, A2, B2, C2の値を出力します。

範囲指定で複数セルの値を取得する

for row in ws['A1:C2']:
    for cell in row:
        print(cell.value)

この例も先ほどの例と同様A1からC2までのセルの値を出力します。

条件に基づいてセルの値を取得する

if文を使うことで条件に合うセルの値だけを取得することもできます。

for row in ws.iter_rows(min_row=1, max_row=5):
    for cell in row:
        if cell.value > 10:
            print(cell.value)

上記コードでは1行目から5行目の範囲でセルの値が10より大きい場合だけ出力しています。

おまけ

openpyxlを利用したサンプルプログラムを紹介します。実際に自分で実行したり、修正したりしてみてください。

今回解説した内容とは少し違いますが、実際にopenpyxlを使用した例です。
こんなことができる、こんな使い方をするというイメージが持てるかなと思います。

from openpyxl import Workbook
from datetime import datetime, timedelta

# 新しいワークブックとワークシートを作成
wb = Workbook()
ws = wb.active
ws.title = "Sales Data"

# ヘッダー行を追加
headers = ["Date", "Product", "Quantity", "Unit Price", "Total Sales"]
ws.append(headers)

# サンプルデータを追加
products = ["Apple", "Banana", "Orange"]
base_date = datetime(2023, 1, 1)

for i in range(1, 11):
    date = base_date + timedelta(days=i)
    for product in products:
        quantity = 10 * i
        unit_price = 1.00 if product == "Apple" else 0.50 if product == "Banana" else 0.75
        total_sales = quantity * unit_price
        ws.append([date.date(), product, quantity, unit_price, total_sales])

# ファイルを保存
file_path = '/filepath/sample_sales_data.xlsx'  # ここにはxlsxファイルを保存する場所のpathを記述
wb.save(file_path)

file_path

上記のコードを実行すると下のようなシートが指定した場所に保存されます。

実行結果

まとめ

今回はpythonのopenpyxlライブラリを使用してセルの値を取得する方法を解説しました。

エンジニアではない方も業務を効率化したりできるので覚えておいて損のない知識だと思います!

当サイトでは他にもPythonの記事を公開しています。

あわせて読みたい
Pythonでヌメロンを作ろう!解説・サンプルコード付き こんにちは!tenjiprogrammingです。 以前Javaでのヌメロンの作り方を紹介しましたが、今回はpythonでヌメロンを作る方法を解説します。短いコードで実装できるので初心...

また、Python以外にもJavaやJavaScriptなど様々なテーマについての記事を公開しています。
そちらも見て頂けると嬉しいです!

あわせて読みたい
JavaScript|写真付き4択クイズの作り方解説【コード有】 こんにちは!tenjiprogrammingです。今回はJavaScriptで写真付きの4択クイズを作成する方法を説明します。 サンプルコードも載せるので自分の環境でも書いて試してみて...
tenjiprogramming
20代エンジニア。
メインで使用している言語はJava/JavaScript/TyoeScript/react/C言語
AWSなどクラウド周りも経験あり。
楽しいをモットーに記事を書いています。
Noteではサンプルコード付きのゲームの作り方など様々な内容を公開しています。
そちらも是非ご覧ください!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次