PythonでExcelファイルを読み込もう!Openpyxlの使い方完全ガイド

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
アイキャッチ

ExcelファイルをPythonで扱いたい!そんなときに便利なのが Openpyxl です。
「そもそもPythonでExcelをどうやって読み込むの…」と思ったことはありませんか?


PythonでExcelファイルを開きたいけど、どうすればいいの?

誤ってファイルを編集しないように、読み取り専用で開きたい。

VBAのファイル(.xlsm)を読み込む際に、VBAを消さずに使いたい。

それは、openpyxlの load_workbook() メソッドを使うと
これらの悩みを簡単に解決できます。


この記事では、Pythonでエクセルを操作できるライブラリ「openpyxl」を使ったエクセル読み込みの方法を初心者向けにわかりやすく解説します。
ファイルを安全に開く方法から、VBAを保持したまま読み込む方法まで、実践的に学んでいきましょう!
もちろんコピペも可能な状態にしています。

プログラミング初心者でも大丈夫!
Python × Excel での作業効率化を、一緒に目指しましょう!


よく使う度
難しさ
覚えておくと安心度

Pythonをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?

そんな方には、UdemyのPython講座がおすすめです。

動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!

多彩な講座から自分に合った講座を探そう!
UdemyでPythonを検索 画像出典:Udemy

\  自分のペースで学べるPython講座はこちら  /

目次

この記事でできるようになること

スポンサーリンク

PythonでExcelを自動化!Openpyxlでできることを徹底解説

Openpyxlはよく聞くけど
そもそも、どんなことができるの?

実は、Excel作業のほとんどを
自動化できるのがOpenpyxlの魅力です!


ExcelがあればVBAを手軽に使えますが、Pythonを使うことでさらに広がるメリットもあります。

便利なメリット
  • 他のシステムやWebサービスと連携できる
    • APIを利用して自動的にデータ取得や更新が可能
  • データ分析や機械学習の活用にも便利
    • PandasやNumPyと組み合わせて高度な分析ができる
  • コードをVBAより簡潔に書けるので、作業効率が向上
    • リスト内包表記や関数型プログラミングでシンプルに処理

それでは、Openpyxlを使って具体的にどんなことができるのか見ていきましょう!

Openpyxlでできること一覧

スクロールできます
機能説明
Excelファイルの読み込み.xlsx.xlsm 形式のファイルを開いてデータを取得できます。
Excelファイルの作成新規のExcelファイルを作成し、シートやデータを追加できます。
セルへの書き込みセルに値や数式を書き込んだり、特定のセルを更新したりできます。
シートの操作シートの追加・削除・コピーや、名前の変更が可能です。
セルの書式設定フォントや背景色、罫線の設定など、見た目を整えられます。
グラフの作成データを元にExcel内で視覚的にわかりやすいグラフを作成できます。
マクロの保持.xlsm 形式のマクロ付きファイルを開き、VBAコードを保持したまま処理できます。

今回は「読み込み」に焦点を当てて解説します!

Openpyxlの中でも Excelファイルの読み込みは、Pythonでの作業を自動化する際に欠かせません。
特に次のような設定を使うことで、さらに便利にファイルを開くことができます。

こんな設定をしながら開けます
  • 読み取り専用で開く
    • 誤ってデータを消したり変更したりする心配がありません。
  • VBAを保持して開く
    • .xlsm ファイルのマクロを消さずに安全にデータを扱えます。
  • データを取得する
    • 数式ではなく、計算結果だけを取得したい場合に便利です。

次は、Openpyxlを使った具体的な読み込み方法を見ていきましょう!

PythonでExcelを操作!openpyxlのインストール方法と確認方法

まずは、openpyxlをインストールしましょう。
以下のコマンドをターミナルやコマンドプロンプトで実行してください。

ポイント

すでにインストール済みの場合は、次のインストールはスキップすることが可能です。

すでにインストールしているか分からない? そんな時の確認方法はこちら

「すでにインストールしているか分からない…」という方は、
以下のコマンドを使って、インストール状況を確認できます。

すべてのインストール済みパッケージを確認

以下のコマンドをターミナルやコマンドプロンプトで実行してください。
openpyxl が一覧に表示されていれば、インストールされています。

pip list

openpyxlがインストールされているか個別に確認

または以下のコマンドをターミナルやコマンドプロンプトで実行してください。
個別で、openpyxlのバージョンなど詳細情報を確認をすることができます。

pip show openpyxl
pip install openpyxl
インストールした画像

これで準備が完了です。
次は、Pythonを使って Excelファイルを読み込む方法を実践してみましょう!

スポンサーリンク

openpyxlでExcelファイルを読み込む方法を徹底解説

OpenpyxlでExcelファイルを読み込むには、load_workbook() 関数を使います。

load_workbook()のパラメーターについて

load_workbook() のパラメータ―
スクロールできます
パラメーター名デフォルト値説明使用例
filename必須読み込むExcelファイルのパスを指定します。load_workbook('sample.xlsx')
read_onlyFalse読み込み専用モードで開きます。
メモリ消費を抑えたい場合に有効です。
load_workbook('sample.xlsx', read_only=True)
keep_vbaFalseマクロ付きのExcelファイル(.xlsm)を読み込む際に使用します。
TrueにするとVBAコードを保持します。
load_workbook('sample.xlsm', keep_vba=True)
data_onlyFalse数式の結果のみを読み込みたい場合にTrueにします。
Falseの場合は数式そのままを読み込みます。
load_workbook('sample.xlsx', data_only=True)
keep_linksTrue外部リンクを保持するかどうかを指定します。
メモリ消費を抑えるためにFalseにすることも可能です。
load_workbook('sample.xlsx', keep_links=False)
rich_textFalseリッチテキスト形式(書式付きテキスト)を保持します。
Trueにすると書式情報を取得できます。
load_workbook('sample.xlsx', rich_text=True)

さらに詳細な仕様については、openpyxl公式ドキュメントを参照してください。

openpyxlの使用例をご紹介

Excelファイルを読み込み専用で開く方法

ファイルを読み込み専用モードで開くには、read_only=Trueを設定します。
これにより、メモリ消費を抑えつつ安全にデータを取得できます。

from openpyxl import load_workbook

wb = load_workbook('sample.xlsx', read_only=True)
print("読み込み専用モードで開きました!")
メリット
  • 誤ってデータを変更してしまうリスクを防げます。
  • ファイルサイズが大きい場合でも、軽快に読み込み可能。

マクロ付きファイルをVBAを保持したまま開く方法

keep_vba=Trueを使用すると、マクロ付きExcelファイル(.xlsm)を読み込みながら、VBAコードを保持できます。

from openpyxl import load_workbook

wb = load_workbook('macro_sample.xlsm', keep_vba=True)
print("マクロ付きファイルをVBAを保持したまま開きました!")
メリット
  • マクロを含むファイルを破損せずに読み込めます。
  • VBAを使った自動化処理と組み合わせる際に便利。

数式の結果のみを取得する方法

data_only=True を設定すると、Excelの数式ではなく計算結果だけを取得できます。

from openpyxl import load_workbook

wb = load_workbook('formula_sample.xlsx', data_only=True)
sheet = wb.active
print(sheet['B2'].value)  # 数式の結果を取得
メリット
  • 数式を解析せず、計算結果だけを取得できるため高速。
  • レポート作成やデータ抽出に最適。

外部リンクを無効化してファイルを開く方法

keep_links=False を使用すると、Excelファイル内の外部リンクを無効化して開けます。
特にメモリ消費を抑えたい場合に役立ちます。

from openpyxl import load_workbook

wb = load_workbook('linked_sample.xlsx', keep_links=False)
print("外部リンクを無効化して開きました!")
メリット
  • 外部リンクの読み込み時間を短縮。
  • リンク切れの影響を受けずにファイルを開ける。

書式付きテキストを保持して読み込む方法

rich_text=True を使うと、セル内の書式情報を保持したまま読み込めます。
書式付きのデータを活用したい場合に有効です。

from openpyxl import load_workbook

wb = load_workbook('rich_text_sample.xlsx', rich_text=True)
sheet = wb.active
print("書式付きテキストを保持しました!")
メリット
  • リッチテキスト形式の情報を活用して、より精度の高いデータ分析が可能。
  • レポートやプレゼン資料の作成にも活用できます。

すべてのパラメーターを使った総合的な例

以下は、load_workbook()全てのパラメーター を使った例です。

from openpyxl import load_workbook

wb = load_workbook(
    filename='example.xlsx',
    read_only=True,
    keep_vba=True,
    data_only=True,
    keep_links=False,
    rich_text=True
)
print("全パラメーターを指定してファイルを開きました!")
メリット
  • 状況に応じてパラメーターを柔軟に調整可能。
  • メモリ使用量の最適化やマクロの保持など、多様なニーズに対応。
スポンサーリンク

openpyxlを使用してファイルを開く際の注意ポイントについて

openpyxlを使用してExcelファイルを操作する際には、いくつかの注意点があります。
ここでは、よくある3つの問題とその対策を紹介します。

注意1 : .xls ファイルは開けないので注意しましょう。

openpyxlは .xlsx ファイルや .xlsm ファイルに対応していますが、古いExcel形式の .xls ファイルはサポートされていません。
.xls ファイルを開こうとするとエラーが発生するため注意が必要です。

※.xlsファイルは、Excel 2007以前のバージョンで使用されていた古いファイル形式のことです。

対策について

■ 対策1: .xls ファイルを .xlsx ファイルに変換する

Excelを開き 次の方法で.xlsx ファイルに変換しましょう。

.xls ⇒ .xlsx への変換方法
  1. 「ファイル」タブをクリックします
  2. 「情報」を選択します。
  3. 「変換、互換モード」を押すことで、.xls形式から.xlsx形式に変換することができます。
対策2 xlrd の使用を検討しましょう。

.xls ファイルは 、Pythonのxlrd ライブラリを使うことで読み取ることができます。

import xlrd
book = xlrd.open_workbook('example.xls')
対策3 pandas で読み込みを検討しましょう。

Pythonのpandas ライブラリを使用しても .xls ファイルも読み込むことができます。

import pandas as pd
df = pd.read_excel('example.xls')

注意2 : 読み込み専用モードで開くとファイルの保存はできません

openpyxlで read_only=True を指定すると、ファイルをメモリ効率よく読み込むことができます。
特に大きなExcelファイルを高速に読み込みたい場合には便利ですが、編集や保存はできなくなるため注意が必要です。

対策について

ファイルの編集や保存が必要な場合は、read_only=False を指定してファイルを開きましょう。

from openpyxl import load_workbook

# 読み込み専用で開かない
wb = load_workbook('example.xlsx', read_only=False)
sheet = wb.active
sheet['A1'] = '変更しました'
wb.save('example.xlsx')

注意3: 数式の結果が取得できない場合がある

openpyxlで data_only=True を指定すると、Excelファイルの数式結果を取得できます。
ただし、Excelファイルが保存されていない場合や、外部リンクを参照している場合は、正しい数式結果を取得できないことがあります。

対策について

数式をそのまま取得したい場合は、data_only=False を使用しましょう。

from openpyxl import load_workbook

# 数式を取得
wb = load_workbook('example.xlsx', data_only=False)
sheet = wb.active

# セルB2の数式を取得
print(sheet['B2'].value)  # 数式そのものを取得

数式の結果を取得したい場合は、Excelでファイルを保存してからdata_only=Trueを指定して読み込みます。
data_only=True を使用する場合は、必ずExcelファイルを保存してから読み込みましょう。
保存しないまま読み込むと、最新の数式結果が反映されません。

wb = load_workbook('example.xlsx', data_only=True)
print(sheet['B2'].value)  # 数式の結果を取得
スポンサーリンク

この記事のまとめ

この記事では、Pythonのopenpyxlを使ってExcelファイルを読み込む方法について詳しく解説しました。
ファイルを安全に開く方法や、マクロ付きファイルの扱い方、数式の結果を取得する方法まで、実践的な内容を学ぶことができましたね。

ポイントのおさらい

今回の学びを活用するために

Pythonと openpyxl の知識をさらに深めたい方は、以下の記事も参考にしてください。

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「Python...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次