Python で Excel を操作・自動化するには、主に以下の 2 つのライブラリがよく使われます:
ここではまず openpyxl
を使った方法 を解説します。
そのあとに pandas
を使った方法 も紹介します。
🔧 事前準備
pip install openpyxl pandas
📘 例となる Excel ファイルの前提
以下のような表(Sheet名は “Sheet1″)があるとします:
A | B | C |
---|---|---|
100 | 200 | 300 |
101 | 201 | 301 |
102 | 202 | 302 |
🧪 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
を使うのがよいです。
おすすめ教材
リンク
コメント