PythonのopenpyxlでExcelファイルを読み込む基本

この記事では、Pythonで.xlsx形式のExcelファイルを操作するためのライブラリopenpyxlを使い、Excelブックを開いてシートやセルのデータを読み込む基本的な方法について解説します。


目次

1. 準備:openpyxlのインストールとサンプルExcelファイル

openpyxlはサードパーティ製のライブラリなので、使用する前にインストールが必要です。

pip install openpyxl

この記事のコードを試すために、sample.xlsxという名前のExcelファイルを作成し、Sheet1に以下のデータを入力してください。

ABC
1NameSubjectScore
2TaroMath85
3HanakoEnglish92
4KenjiScience78

2. Excelブックを開き、シートを取得する

まず、openpyxl.load_workbook()関数でExcelファイル(ワークブックオブジェクト)を開きます。

import openpyxl

# Excelワークブックを読み込む
workbook = openpyxl.load_workbook("sample.xlsx")
print(f"ワークブックの型: {type(workbook)}")

ワークブック内のシートには、以下の方法でアクセスできます。 wb.sheetnames: すべてのシート名をリストとして取得します。(古いget_sheet_names()は非推奨) wb['シート名']: シート名で特定のシートオブジェクトを取得します。(古いget_sheet_by_name()は非推奨) wb.active: 現在アクティブなシートを取得します。

# すべてのシート名を表示
print(f"シート名の一覧: {workbook.sheetnames}")

# 'Sheet1'という名前のシートを取得
sheet = workbook['Sheet1']
print(f"現在のシートのタイトル: {sheet.title}")

3. シートからセルを読み取る

シートオブジェクトから個々のセルにアクセスし、その値を取得するにはいくつかの方法があります。

座標でアクセスする 'A1'のような座標の文字列を使って、直接セルオブジェクトにアクセスできます。セルの値は.value属性で取得します。

cell_a1 = sheet['A1']
print(f"セルA1の値: {cell_a1.value}")

cell_b2 = sheet['B2']
print(f"行 {cell_b2.row}, 列 {cell_b2.column} の値は 「{cell_b2.value}」 です。")
print(f"セル {cell_b2.coordinate} の値は 「{cell_b2.value}」 です。")

cell()メソッドでアクセスする sheet.cell(row=行番号, column=列番号)の形式でもセルを取得できます。行と列の番号は1から始まります。

# 1行目、2列目のセル(B1)の値を取得
cell_b1_value = sheet.cell(row=1, column=2).value
print(f"B1の値: {cell_b1_value}")

# シートの最大行・最大列を取得
print(f"最大行: {sheet.max_row}")
print(f"最大列: {sheet.max_column}")

4. 複数のセル(範囲)を一度に読み取る

シートのスライス機能を使うと、矩形領域のセルを一度に取得できます。

# A1からC3までのセル範囲を取得
cell_range = sheet['A1':'C3']

for row_of_cells in cell_range:
    for cell in row_of_cells:
        print(f"{cell.coordinate}: {cell.value}", end=" | ")
    print()

実行結果:

A1: Name | B1: Subject | C1: Score | 
A2: Taro | B2: Math | C2: 85 | 
A3: Hanako | B3: English | C3: 92 | 

また、sheet.iter_rows()sheet.iter_cols()を使うと、行ごとや列ごとにセルを効率的に処理できます。


5. ユーティリティ関数(列文字と番号の変換)

openpyxl.utilsモジュールには、列番号(1, 2…)と列文字('A', 'B'…)を相互に変換する便利な関数が含まれています。

from openpyxl.utils import get_column_letter, column_index_from_string

# 番号から文字へ
print(f"1番目の列: {get_column_letter(1)}")   # 出力: A
print(f"27番目の列: {get_column_letter(27)}") # 出力: AA

# 文字から番号へ
print(f"列 'B': {column_index_from_string('B')}")   # 出力: 2
print(f"列 'AB': {column_index_from_string('AB')}") # 出力: 28

まとめ

openpyxlライブラリは、Excelファイルの読み込みを自動化するための強力なツールです。load_workbookでファイルを開き、wb['シート名']でシートにアクセスし、sheet['A1']sheet.cell()で個々のセルの値を読み取ることが基本操作となります。これらの機能を組み合わせることで、Excelシート上のデータを効率的に処理することが可能です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次