pip install pandas openpyxl xlsxwriter使用 sheet_name=None 将整个 Excel 文件加载为 OrderedDict,Key 为 Sheet 名,Value 为 DataFrame。
import pandas as pd
# 读取所有 Sheet
excel_data = pd.read_excel('data.xlsx', sheet_name=None)
# 遍历所有 Sheet 名
for sheet_name, df in excel_data.items():
print(f"处理表: {sheet_name}, 数据行数: {len(df)}")当所有 Sheet 结构相同时,
# 合并所有 Sheet 并增加一列记录来源
all_sheets = []
for name, df in excel_data.items():
df['Source_Sheet'] = name
all_sheets.append(df)
df_total = pd.concat(all_sheets, ignore_index=True)如果只需要读取符合特定命名的 Sheet
# 获取 Excel 中所有的 Sheet 名称
xl = pd.ExcelFile('data.xlsx')
target_sheets = [s for s in xl.sheet_names if "2026" in s]
# 只读取目标 Sheet
df_list = [pd.read_excel('data.xlsx', sheet_name=s) for s in target_sheets]使用 ExcelWriter 上下文管理器,避免多次 IO 开销。
with pd.ExcelWriter('output.xlsx', engine='xlsxwriter') as writer:
df_sales.to_excel(writer, sheet_name='bug数量', index=False)
df_stats.to_excel(writer, sheet_name='bug统计摘要', index=False)
# 获取 xlsxwriter 句柄进行格式化
workbook = writer.book
worksheet = writer.sheets['bug分布']
# 设置列宽
worksheet.set_column('A:Z', 15)对不同 Sheet 进行条件格式化:
def highlight_high_sales(s):
return ['background-color: yellow' if v > 10000 else '' for v in s]
with pd.ExcelWriter('styled_output.xlsx') as writer:
# 只对特定 Sheet 应用样式
df.style.apply(highlight_high_sales, subset=['Amount'])\
.to_excel(writer, sheet_name='高额预警', index=False)pd.read_excel(..., engine='openpyxl', usecols=['A', 'B']) 仅读取需要的列。pd.to_datetime() 强制转换。NaN,处理前需执行 df.ffill()。#panadas #excel