【Python】Excelファイルの表の値を取得する

Excel操作

Python で Excel を操作・自動化するには、主に以下の 2 つのライブラリがよく使われます:

  • openpyxl.xlsx(Excel 2007以降)対応、セルごとの操作が得意
  • pandas:表全体の読み込み・処理が得意(高速・便利)

ここではまず openpyxl を使った方法 を解説します。
そのあとに pandas を使った方法 も紹介します。


🔧 事前準備

pip install openpyxl pandas

📘 例となる Excel ファイルの前提

以下のような表(Sheet名は “Sheet1″)があるとします:

ABC
100200300
101201301
102202302

🧪 openpyxl を使った方法

from openpyxl import load_workbook

# Excel ファイルを読み込み
wb = load_workbook('example.xlsx', data_only=True)
ws = wb['Sheet1'] # シート名を指定

✅ A1 の値を取得する

value_a1 = ws['A1'].value
print("A1の値:", value_a1)

表示結果

A1の値: 100

✅ A行(1行目)の値を取得する(全列)

row_1 = [cell.value for cell in ws[1]]
print("1行目の値:", row_1)

表示結果

1行目の値: [100, 200, 300]

✅ 1列(A列)の値を取得する(全行)

column_a = [cell.value for cell in ws['A']]
print("A列の値:", column_a)

表示結果

A列の値: [100, 101, 102]

✅ A行値すべて + 各列の値すべてを取得(表全体のイメージ)

all_data = [[cell.value for cell in row] for row in ws.iter_rows()]
print("表全体:", all_data)

# 行ごとに出力したい場合
for i, row in enumerate(all_data, 1):
print(f"{i}行目: {row}")

表示結果

表全体: [[100, 200, 300], [101, 201, 301], [102, 202, 302]]

1行目: [100, 200, 300]
2行目: [101, 201, 301]
3行目: [102, 202, 302]

🧪 pandas を使った方法(表全体を扱うのに便利)

import pandas as pd

# Excelファイルからデータフレームとして読み込む
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')

✅ A1 の値を取得(A列1行目)

value_a1 = df.iloc[0, 0]
print("A1の値:", value_a1)

表示結果

A1の値: 101

✅ A行(1行目)の値を取得(リスト形式)

row_1 = df.iloc[0].tolist()
print("1行目の値:", row_1)

表示結果

1行目の値: [101, 201, 301]

✅ 1列(A列)の値を取得

column_a = df.iloc[:, 0].tolist()
print("A列の値:", column_a)

表示結果

A列の値: [101, 102]

✅ 表全体の値を取得

all_values = df.values.tolist()
print("表全体:", all_values)

表示結果

表全体: [[101, 201, 301], [102, 202, 302]]

✅ どっちを使えばいい?

シーンおすすめ
セル単位で編集・取得したいopenpyxl
表全体を一括処理したいpandas

必要に応じて、どちらの方法も組み合わせることも可能です。
さらに複雑な処理(グラフ、書式設定など)が必要な場合は openpyxl を使うのがよいです。

おすすめ教材

コメント

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