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

セルの値を読み書きする基本

openpyxlを使ってExcelファイルのセルの値を読み書きするには、まず正しい順序でExcelファイル(ワークブック)にアクセスする必要があります。

ステップごとのアクセス手順

  1. ブックを開く:Excelファイル全体を操作するための入り口です。
  2. シートを選ぶ:ファイル内の特定のシートを指定します。
  3. セルを指定する:シート内の特定のセルにアクセスします。

ポイントまとめ

openpyxlでは、必ず「ブック → シート → セル」の順番でアクセスします。


このように、操作の流れを順を追って覚えることで、openpyxlの基本的な使い方がスムーズに理解できます。

ブックにアクセスする

openpyxlを使ってExcelファイルを操作するには、まず「ブック」にアクセスする必要があります。ブックとは、Excelファイル全体を指します。openpyxlでは、load_workbookという関数を使って、既存のExcelファイルを開くことができます。

サンプルコード

from openpyxl import load_workbook

# Excelファイル(例:sample.xlsx)を読み込む
wb = load_workbook('sample.xlsx')

シートへアクセス

ブック(Excelファイル)を読み込んだら、次にアクセスするのが「シート」です。Excelファイルの中には複数のシートが存在する場合があり、操作したいシートを明確に指定する必要があります。

シート名でアクセスする方法

from openpyxl import load_workbook

# Excelファイルを読み込む
wb = load_workbook('sample.xlsx')

# 'Sheet1'という名前のシートにアクセスする
ws = wb['Sheet1']

シートをインデックスで指定する方法

# 最初のシートにアクセスする(インデックスは0から始まる)
first_sheet = wb.worksheets[0]

補足ポイント

  • インデックスは0から始まることに注意してください。
  • どんなシートがあるかを確認したいときは、以下のコードで一覧表示できます:
# ブック内のシート名一覧を表示
print(wb.sheetnames)

セルの値を読み取る方法

openpyxlを使ってExcelファイルからセルの値を読み取るには、まず対象のセルを指定し、そのvalueプロパティを使います。
読み取る方法はA1形式R1C1形式の2種類があります。

サンプルコード(A1形式での指定)

from openpyxl import load_workbook

# Excelファイルを読み込む
wb = load_workbook('sample.xlsx')

# 対象のシートを選択
ws = wb['Sheet1']

# A1セルの値を取得
cell_value = ws['A1'].value

# 結果を表示
print("A1セルの値は:", cell_value)

R1C1形式でのセル読み取り

A1のような「列+行」の形式ではなく、rowとcolumnで位置を指定する方法もあります。
これはR1C1形式と呼ばれ、繰り返し処理などに便利です。

# R1C1形式でA1(1行1列)の値を取得
cell_value = ws.cell(row=1, column=1).value
print("R1C1形式でのA1セルの値は:", cell_value)

Cell型とは?

openpyxlでは、Excelの各セルはCell型のオブジェクトとして扱われます。このCell型には、セルの位置や値、フォーマットなど、さまざまな情報が格納されています。

Cell型の主なプロパティ

  • value:セルに入力されている値を取得または設定する
  • row:セルの行番号(1から始まる)
  • column:セルの列番号(1から始まる)
  • coordinate:セルの番地(例:’B2’)を文字列として取得
  • data_type:セルのデータ型(例:’s’=文字列, ‘n’=数値, ‘d’=日付)

サンプルコード

from openpyxl import load_workbook

wb = load_workbook('sample.xlsx')
ws = wb.active

cell = ws['B2']

print("セルの値:", cell.value)
print("セルの位置:", cell.coordinate)
print("行番号:", cell.row)
print("列番号:", cell.column)
print("データ型:", cell.data_type)

特定範囲のセルを読み取る方法

openpyxlを使うと、Excelの特定範囲のセルをまとめて読み取ることができます。これにより、行や列のデータを一括で処理したり、表形式のデータを効率よく操作したりすることが可能になります。

セル範囲を指定して読み取る手順

  • 1. Excelファイルを読み込む
  • 2. 対象のシートを選択する
  • 3. 範囲(例:A1:C3)を指定して繰り返し処理で値を取得する

サンプルコード(スライス形式)

from openpyxl import load_workbook

# Excelファイルを読み込む
wb = load_workbook('sample.xlsx')
ws = wb['Sheet1']

# A1からC3までの範囲を読み取る
for row in ws['A1:C3']:
    for cell in row:
        print(f"{cell.coordinate}: {cell.value}")

サンプルコード(iter_rowsを使う方法)

iter_rows()を使うと、範囲を指定しながらセルを読み取ることができます。データ量が多い場合や柔軟な処理を行いたい場合におすすめです。

# A1からC3までの範囲を読み取る(iter_rowsを使用)
for row in ws.iter_rows(min_row=1, max_row=3, min_col=1, max_col=3):
    for cell in row:
        print(f"{cell.coordinate}: {cell.value}")

公式ドキュメント

openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.1.3 documentation

コメント

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