import pandas as pd
df = pd.read_excel("monthly_report.xlsx")
By default this reads the first sheet.
df = pd.read_excel("workbook.xlsx", sheet_name="January")
df = pd.read_excel("workbook.xlsx", sheet_name=2) # by index, 0-based
sheets = pd.read_excel("workbook.xlsx", sheet_name=None)
# sheets is a dict: {"January": df1, "February": df2, ...}
for name, df in sheets.items():
print(name, len(df))
pd.read_excel("workbook.xlsx",
sheet_name="Summary",
skiprows=3, # skip the title block
usecols="B:F", # read columns B through F
nrows=50)
# One sheet
df.to_excel("output.xlsx", index=False, sheet_name="Results")
# Multiple sheets
with pd.ExcelWriter("output.xlsx") as writer:
monthly.to_excel(writer, sheet_name="Monthly", index=False)
yearly.to_excel(writer, sheet_name="Yearly", index=False)
sheets = pd.read_excel("2026_monthly.xlsx", sheet_name=None)
frames = []
for name, df in sheets.items():
df["month"] = name
frames.append(df)
combined = pd.concat(frames, ignore_index=True)
print(combined.shape)
combined.to_excel("2026_combined.xlsx", index=False, sheet_name="All")
openpyxl under the hood for .xlsx. Anaconda includes it; if you used a different install: pip install openpyxl.
pd.read_excel() with sheet_name=... picks one sheet; sheet_name=None returns all as a dict.ExcelWriter writes multiple sheets to one file.pd.concat([...]).Write a function inventory(path) that returns a DataFrame with one row per sheet in a workbook, with columns: sheet_name, n_rows, n_cols.