专业编程基础技术教程

网站首页 > 基础教程 正文

python合并当前所有EXCEL文件表

ccvgpt 2024-08-09 12:03:07 基础教程 9 ℃


import os

python合并当前所有EXCEL文件表

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文件或没有读取到任何数据。")

最近发表
标签列表