Excelの表データをPythonで読み取れるようになると、作業効率が一気に上がります🚀✨
たとえば「毎月の集計」「定型レポート作成」「CSV化」「データ整形」「チェック自動化」などが、クリック作業ゼロで回せるようになります🧠✅
リンク
PythonでExcelを読む代表的な方法は2つ🧩✨
方法①:openpyxl(セル単位で細かく取れる)🧷
- セルA1の値、行ごとの値、範囲指定などが得意📌
- 書式は基本無視で「値だけ」取りたいケースに強い💪
方法②:pandas(表を一気にDataFrame化できる)📈
- 表形式(行列)を丸ごと読み込み→集計・加工が超ラク✨
- “データ分析”や“前処理”まで一気にやりたい人向け🎯
まずは準備:ライブラリをインストール📦✨
openpyxlを使う場合🧷
pip install openpyxl
pandasでExcelを読む場合📈
pip install pandas openpyxl
【基本】openpyxlでExcelの表データを取得する📘✨
1) Excelを開いてシートを選ぶ📂
from openpyxl import load_workbook
path = r"C:\work\data.xlsx" # 🔁 自分のExcelパスに変更
wb = load_workbook(path, data_only=True) # ✅ 数式セルは計算結果の値を取得
ws = wb["Sheet1"] # または wb.active
💡ポイント
data_only=Trueを付けると、数式の「式」ではなく「表示値(計算結果)」を取りやすいです🧠✅- ただし、Excel側で未計算だと古い値になることがあります(後半で対策あり)⚠️
2) セル1つの値を取る(最小構成)🔎
value = ws["B2"].value
print(value)
3) 行をまとめて取得する(ヘッダー込み)🧾✨
A1〜D10みたいに範囲で取る📌
rows = ws["A1":"D10"]
for row in rows:
values = [cell.value for cell in row]
print(values)
行番号・列番号で取る(より柔軟)🧱
for r in range(1, 11): # 1〜10行
for c in range(1, 5): # 1〜4列(A〜D)
print(ws.cell(r, c).value)
4) 「表の終端まで」自動で読む(空行まで)🧠✅
よくある形:A列が空になるまで読む📌
r = 1
while ws.cell(r, 1).value is not None: # A列が空になるまで
row_values = [ws.cell(r, c).value for c in range(1, ws.max_column + 1)]
print(row_values)
r += 1
5) 最速で「表」っぽく取る:iter_rowsを使う⚡
for row in ws.iter_rows(min_row=1, max_row=100, min_col=1, max_col=10, values_only=True):
print(row)
✅ values_only=True のメリット
cell.valueを毎回書かなくてOK✨- そのままタプルで取れて軽いです⚡
【実務で強い】pandasでExcel表を一括取得する📈✨
1) 1枚のシートをDataFrame化📊
import pandas as pd
path = r"C:\work\data.xlsx"
df = pd.read_excel(path, sheet_name="Sheet1") # 先頭行をヘッダー扱い
print(df.head())
2) ヘッダーが2行目から始まる場合🧾
df = pd.read_excel(path, sheet_name="Sheet1", header=1)
3) 必要な列だけ読む(高速&安全)🎯
df = pd.read_excel(path, sheet_name="Sheet1", usecols="A:D")
4) 行数が多いExcelでも軽く読むコツ⚡
usecolsで列を絞る🎯- 余計なシートを読まない📄
- 表の範囲が決まっているなら先に範囲指定する🧠✅
よくあるハマりどころと対策⚠️✨
数式セルが「式」になってしまう📌
- openpyxlは
data_only=Trueが基本✅ - ただし Excel側で計算済みの値 が保存されていないと、期待通りにならないことがあります⚠️
➡️ 対策:Excelで一度開いて保存(または計算設定を確認)💾✨
xls(古いExcel)が読めない📄
openpyxlは基本xlsx用です🧷- xlsの場合は、いったんxlsxに変換するのが早いです✅
文字化けする?🌀
Excel読み込みで「日本語が文字化け」は少なめですが、
CSV変換後に文字化けするケースが多いです⚠️
➡️ CSV出力は encoding="utf-8-sig" を使うのが鉄板です🧠✅
すぐ使える!「Excel→CSV」変換テンプレ📤✨
pandasで一発変換(最短)🚀
import pandas as pd
path = r"C:\work\data.xlsx"
df = pd.read_excel(path, sheet_name="Sheet1")
df.to_csv(r"C:\work\data.csv", index=False, encoding="utf-8-sig")
活用アイデア(あなたの作業がこう変わる)🌈✨
✅ 毎月のExcel集計を自動化して、作業時間を半分以下に⏱️
✅ チェック表の“漏れ・重複”を自動検知してミス削減🛡️
✅ Excel→CSV→DB登録まで一気通貫で自動化🔁
✅ レポートを自動生成して“考える時間”を増やせる🧠✨
よくある質問(FAQ)🙋♂️🙋♀️✨
Q1. openpyxlとpandas、どっちを使うべき?🤔
表を丸ごと扱うならpandas📈、セル単位で細かく扱うならopenpyxl🧷 が最短です✅
Q2. 数式の結果が取れません…⚠️
load_workbook(..., data_only=True) を使ってください✅
ただしExcel側で未計算だと古い値になることがあります💡(一度開いて保存が確実です💾)
Q3. シート名が分からないです📄
openpyxlならこれで一覧が取れます✅
print(wb.sheetnames)
Q4. 途中に空白行がある表はどう読む?🌀
「A列が空になったら終了」のような単純ルールだと途切れます⚠️
➡️ 対策は「最大行まで読む」「キー列を複数見る」「表範囲を固定する」が安定です🧠✅
Q5. 取得したデータを加工して集計したい📊
それならpandasが最強です🔥groupby() や pivot_table() でExcelより速く集計できます🚀✨
まとめ✅✨
- openpyxl:セル単位・範囲指定で取りたい人向け🧷
- pandas:表を一気に読み込んで加工・集計したい人向け📈
- Excelデータ取得ができると、単純作業が“自動化の資産”に変わるのが最大のメリットです💎✨


コメント