PythonでExcelを操作!OpenPyXLを使った読み込み方法を徹底解説

Excel操作をPythonで効率化したい」と考えている方に

おすすめのライブラリがOpenPyXLです。

本記事では、OpenPyXLを使ったExcelファイルへの読み込み操作をわかりやすく解説します。

この記事の流れ

OpenPyXLでExcel操作を自在に行い、業務の効率化やデータ処理を一歩進めましょう!

OpenPyXLの概要

OpenPyXLは、Pythonを使ってExcelファイルを操作するためのライブラリです。

Excelファイルの作成、読み取り、編集、保存など、幅広い操作に対応しており、

特に業務効率化やデータ分析の自動化において強力なツールです。

「PythonでExcelを操作したい」と考えている方にとって、

OpenPyXLはシンプルかつ直感的に使えるライブラリとして非常におすすめです。

ほかのExcelライブラリとの比較

OpenPyXLは、Pandasやxlrdなどのライブラリと比較して、

Excelファイルの操作に特化しており、以下のような特徴を持っています。

特徴 OpenPyXL Pandas xlrd
用途 Excelファイルの読み書き、スタイル設定、グラフ作成 データフレームとしてのデータ操作や分析 Excelファイルの読み取り専用
Excelの書式対応 対応(フォント、セルの背景色、罫線など) 非対応(データのみ操作) 非対応(データのみ操作)
グラフ作成 可能 非対応 非対応
サポート形式 .xlsx, .xlsm .xlsx, .csv .xls
主な用途 Excelファイルの完全な操作(作成から編集まで) 大量データの集計・分析 旧形式Excelファイルの読み取り

インストール方法

OpenPyXLを使用するためには、まずPython環境を整え、ライブラリをインストールする必要があります。
以下の手順に従えば、初心者でも簡単にセットアップを完了できます。

Pythonのインストール確認

まず、Pythonがインストールされていることを確認します。以下のコマンドをターミナルまたはコマンドプロンプトで実行してください:

python --version

Pythonのバージョンが表示されれば準備完了です。
インストールされていない場合は、Python公式サイトからダウンロードしてください。

OpenPyXLのインストール

次に、OpenPyXLをインストールします。以下のコマンドを実行してください:

pip install openpyxl

このコマンドでOpenPyXLとその依存ライブラリが自動的にインストールされます。

読み込み操作の詳細解説

Workbookクラスの読み取り

OpenPyXLでは、Excelファイル全体を読み込むために
load_workbook() メソッドを使用します。
このメソッドを使うことで、指定したExcelファイルを開き、
Workbookオブジェクトとして操作することができます。

load_workbook() を使えば、Excelファイル全体を簡単に読み取れます。
まずは、以下のコードを見てみましょう。

from openpyxl import load_workbook

# Excelファイルを読み込む
workbook = load_workbook("example.xlsx")

# 読み込んだWorkbookオブジェクトを確認
print(workbook.sheetnames)  # シート名の一覧を表示

読み込んだWorkbookオブジェクトを操作することで、Excelファイル全体にアクセス可能になります。

ポイント:
– 読み込み専用の場合、read_only=True オプションを指定するとパフォーマンスが向上します。
– ファイルが存在しない場合は FileNotFoundError が発生するため、事前にファイルパスを確認しましょう。

read_only=Trueについて

OpenPyXLでは、load_workbook() を使用してExcelファイルを読み込む際に、
read_only=True オプションを指定することで、ファイルの読み取り専用モードを有効にできます。
このモードを使用すると、特に大規模なExcelファイルを操作する際のパフォーマンスが大幅に向上します。

仕組み

read_only=True を指定すると、OpenPyXLはファイル全体をメモリにロードするのではなく、
必要なデータを逐次的に読み込むようになります。

これにより、使用するメモリ量が最小限に抑えられ、処理速度が速くなるメリットがあります。

Worksheetクラスの読み取り

OpenPyXLを使用すると、Workbookオブジェクトから特定のシート(Worksheet)を簡単に選択できます。
シート名を指定する方法や、アクティブなシートを取得する方法を以下で解説します。

「シート名を指定するだけで、特定のワークシートを選択できます。」

シート名を指定して取得

既存のExcelファイル内の特定のシートを選択するには、シート名を指定します。

from openpyxl import load_workbook

# Excelファイルを読み込む
workbook = load_workbook("example.xlsx")

# シート名を指定してWorksheetオブジェクトを取得
sheet = workbook["Sheet1"]
print(sheet.title)  # シート名を出力

このコードでは、Sheet1 という名前のシートを選択しています。
取得したWorksheetオブジェクトを使用して、セルデータやシート情報にアクセスできます。

アクティブなシートを取得

Excelファイルを読み込むと、デフォルトで「アクティブなシート」を取得することが可能です。

# アクティブなシートを取得
active_sheet = workbook.active
print(active_sheet.title)  # アクティブシート名を出力

この方法は、特にシート名がわからない場合や、最初のシートを簡単に操作したい場合に便利です。

ポイント:
– シート名が間違っていると KeyError が発生します。

Cellクラスの読み取り

OpenPyXLでは、特定のセルを指定してデータを読み取ることができます。
セルの番地(例: “A1″)を使用する方法と、行と列の番号を指定する方法の2通りがあります。

セルの番地を使用する

セルの番地(例: “A1″)を直接指定して値を取得します。シンプルで直感的な方法です。

from openpyxl import load_workbook

# Excelファイルを読み込む
workbook = load_workbook("example.xlsx")
sheet = workbook.active

# セルの番地を指定して値を取得
value = sheet["A1"].value
print(value)  # セルA1の値を出力

この方法は、特定のセルを個別に処理したい場合に便利です。

行と列の番号を使用する

sheet.cell() を使用して、行と列の番号を指定してセルを取得します。

# 行と列を指定してセルの値を取得
value = sheet.cell(row=1, column=1).value
print(value)  # セルA1の値を出力

任意の範囲のセルの値を取得

OpenPyXLを使用すると、Excelの特定の範囲にあるセルデータを簡単に取得できます。
ここでは、複数の方法で範囲指定をしてセルの値を取得する手順を解説します。

セルの番地を使用する

特定の範囲(例: “A1:C3″)を指定してセルの値を取得する方法です。
各セルの値にアクセスする際に、セルオブジェクトをループで取得します。

from openpyxl import load_workbook

# Excelファイルを読み込む
workbook = load_workbook("example.xlsx")
sheet = workbook.active

# 範囲指定でセルを取得
for row in sheet["A1:C3"]:
    for cell in row:
        print(cell.value)  # 各セルの値を出力

この方法では、指定した範囲内のセルを行単位で処理できます。

セル名を使用する

iter_rows() を使用して、開始・終了範囲を指定して効率的にセルデータを取得する方法です。

# iter_rowsを使用してセルを取得
for row in sheet.iter_rows(min_row=1, max_row=3, min_col=1, max_col=3):
    for cell in row:
        print(cell.value)  # 各セルの値を出力

iter_rows は範囲を細かく指定でき、より効率的にデータを取得する場合に便利です。

次のステップ

今回の内容を基に、さらにOpenPyXLを活用してExcel操作を効率化してみましょう!
次に挑戦したい操作の例:

これからもOpenPyXLを活用して、業務効率化やデータ分析を加速させましょう!

関連記事

RPA--OPENPYXL
「RPA--OPENPYXL」の記事一覧です。

コメント

タイトルとURLをコピーしました