import os
import pandas as pd
from datetime import datetime
# 设置文件夹路径(这里假设为当前文件夹)
folder_path = '.'
# 获取当前时间戳,并格式化为字符串,用于文件名
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
output_filename = f'汇总_{timestamp}.xlsx'
# 创建一个空的列表,用于存储所有工作表的内容
all_sheets_data = []
# 遍历当前文件夹下的所有.xls和.xlsx文件
for filename in os.listdir(folder_path):
if filename.endswith('.xls') or filename.endswith('.xlsx') and not filename.startswith('~#39;):
file_path = os.path.join(folder_path, filename)
# 读取文件中的所有工作表
try:
# 读取Excel文件的所有sheet_names
sheet_names = pd.ExcelFile(file_path).sheet_names
for sheet_name in sheet_names:
# 读取当前工作表
df = pd.read_excel(file_path, sheet_name=sheet_name, nrows=0) # 只读取列名
column_types = {col: str for col in df.columns} # 设置所有列为字符串类型
df = pd.read_excel(file_path, sheet_name=sheet_name, converters=column_types) # 读取整个工作表并转换数据类型
# 将当前工作表的内容添加到列表中
all_sheets_data.append(df)
except Exception as e:
print(f"读取文件 {file_path} 的工作表时出错: {e}")
# 如果读取到了数据,则合并所有工作表的内容到一个单一的DataFrame中
if all_sheets_data:
# 使用pd.concat合并所有DataFrame,并设置ignore_index=True以重置索引
all_data = pd.concat(all_sheets_data, ignore_index=True)
# 保存到当前文件夹下,文件名为“汇总_时间戳.xlsx”
all_data.to_excel(output_filename, index=False)
print(f"数据已保存到文件 {output_filename} 中。")
else:
print("未找到可读取的Excel文件或没有读取到任何数据。")