如何从多个Excel工作簿中提取同一工作表并生成DataFrame
多Excel文件指定Sheet批量导入实现
你现有的代码已经完成了多文件路径选择的逻辑,补充循环读取逻辑即可,以下是完整可运行代码:
import tkinter as tk from tkinter import filedialog import pandas as pd # 弹窗选择多个Excel文件 root = tk.Tk() root.withdraw() file_paths = filedialog.askopenfilenames( initialdir = "C:/", title = "选择需要处理的Excel文件(可多选)", filetypes = (("Excel文件","*.xlsx"),("所有文件","*.*")) ) root.destroy() # 批量读取Sheet1,存储为【文件名:DataFrame】格式的字典 df_collection = {} for file_path in file_paths: # 提取不带后缀的文件名作为字典的键,方便后续索引 file_name = file_path.split("/")[-1].rsplit(".", 1)[0] # 读取指定工作表,可根据需求添加header、skiprows等pandas读表参数 df_collection[file_name] = pd.read_excel(file_path, sheet_name="Sheet1")
使用说明
- 后续要操作对应文件的DataFrame时,直接通过
df_collection["文件名"]调用即可,例如你选中了名为「2024年业绩.xlsx」的文件,调用df_collection["2024年业绩"]即可获取对应的数据表 - 如果你需要生成独立的变量而非使用字典存储,可以用动态变量生成逻辑(不推荐,大量文件时变量管理难度高):
for index, file_path in enumerate(file_paths): # 生成df_1、df_2……格式的独立变量 globals()[f"df_{index+1}"] = pd.read_excel(file_path, sheet_name="Sheet1") - 如需兼容部分文件不存在Sheet1的场景,可添加异常捕获逻辑避免程序中断:
df_collection = {} for file_path in file_paths: file_name = file_path.split("/")[-1].rsplit(".", 1)[0] try: df_collection[file_name] = pd.read_excel(file_path, sheet_name="Sheet1") except ValueError: print(f"文件[{file_name}]不存在Sheet1,已跳过导入")
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

