pandasで.xlsx形式のExcelファイルを読み込む場合は、openpyxlを利用します。以前はxlrdを使う例も多くありましたが、現在のxlrdが対応しているのは旧形式の.xlsです。
この記事では、1シートだけを読み込む方法と、複数のExcelファイルに含まれる全シートを読み込む方法を紹介します。
公式仕様確認日:2026年8月1日
目次
1. pandasとopenpyxlをインストールする
.xlsxを読み込むため、pandasとopenpyxlをインストールします。
python -m pip install pandas openpyxl
古い.xlsファイルを扱う場合はxlrdが選択肢になりますが、.xlsxの読み込みには使用できません。
2. Excelファイルを読み込む
最初のシートだけをDataFrameとして読み込む場合は、pandas.read_excelを使います。
import pandas as pd
df = pd.read_excel("book1.xlsx", engine="openpyxl")
print(df.head())
シート名を指定する場合は、sheet_nameを設定します。
df = pd.read_excel(
"book1.xlsx",
sheet_name="Sheet1",
engine="openpyxl",
)
複数ファイルの全シートを読み込む
sheet_name=Noneを指定すると、シート名をキー、DataFrameを値とする辞書が返ります。複数ファイルの全シートを読み込む場合は、次のように処理できます。
import pandas as pd
books = ["book1.xlsx", "book2.xlsx"]
dataframes = []
for book in books:
sheets = pd.read_excel(
book,
sheet_name=None,
engine="openpyxl",
)
for sheet_name, dataframe in sheets.items():
dataframes.append(
{
"book": book,
"sheet": sheet_name,
"data": dataframe,
}
)
ファイル名とシート名も一緒に保持しておくと、後から各DataFrameの読み込み元を確認できます。
3. 読み込み時によく使う引数
pandas.read_excelでは、用途に応じて次のような引数を指定できます。
sheet_name: 読み込むシート名や位置を指定する。Noneなら全シートを読み込むskiprows: 先頭から読み飛ばす行数、または読み飛ばす行を指定するheader: 列名として使う行を指定する。列名のないデータはNoneを指定するusecols: 読み込む列をExcelの列記号や列名などで限定するdtype: 列ごとのデータ型を指定する
例えば、先頭2行を読み飛ばし、A列からE列だけを読み込む場合は次のように書けます。
df = pd.read_excel(
"book1.xlsx",
skiprows=2,
usecols="A:E",
engine="openpyxl",
)
4. まとめ
.xlsx形式のExcelファイルは、pandasとopenpyxlを組み合わせて読み込みます。1シートだけならpandas.read_excelをそのまま使い、全シートが必要な場合はsheet_name=Noneを指定すると簡潔に処理できます。
詳細な引数や対応形式は、pandas.read_excelの公式ドキュメントとpandas.ExcelFileの公式ドキュメントで確認できます。
読み込んだ後の操作については、pandas.DataFrameで複数行・列を一括で削除するとpandas.DataFrameで置換処理を参照してください。