冰菲 发表于 2023-5-26 14:19:09

python 求代码,一个文件夹中有多个工作簿并且里面表格式一样,如何合并后格式不变

import os
import pandas as pd

# 设置要读取的文件夹路径和工作表名称
folder_path = '合并文件'


# 定义一个空的DataFrame,用于存储所有工作簿数据
all_data = pd.DataFrame()

# 循环遍历文件夹中的所有Excel文件,并将数据添加到all_data中
for file_name in os.listdir(folder_path):
    # 判断文件是否为Excel文件
    if file_name.endswith('.xlsx') or file_name.endswith('.xls'):
      # 读取工作簿文件中的数据
      file_path = os.path.join(folder_path, file_name)
      df = pd.read_excel(file_path)
      
      # 将读取的数据添加到all_data中
      all_data = all_data.append(df, ignore_index=True)

# 将合并后的数据保存到一个新的Excel工作簿中
writer = pd.ExcelWriter('合并后.xlsx')
all_data.to_excel(writer index=False)
writer.save()


以上为我的代码,运行后合并的表格式变了

isdkz 发表于 2023-5-26 14:19:52

可以尝试在将所有工作簿数据添加到all_data中之前,先将所有工作簿的列名提取出来,然后再将数据添加到all_data中。这样可以确保合并后的表格式不变。以下是修改后的代码:

import os
import pandas as pd

# 设置要读取的文件夹路径和工作表名称
folder_path = '合并文件'

# 定义一个空的DataFrame,用于存储所有工作簿数据
all_data = pd.DataFrame()

# 循环遍历文件夹中的所有Excel文件,并将数据添加到all_data中
for file_name in os.listdir(folder_path):
    # 判断文件是否为Excel文件
    if file_name.endswith('.xlsx') or file_name.endswith('.xls'):
      # 读取工作簿文件中的数据
      file_path = os.path.join(folder_path, file_name)
      df = pd.read_excel(file_path)

      # 获取工作簿的列名
      columns = df.columns

      # 将读取的数据添加到all_data中
      all_data = all_data.append(df, ignore_index=True)

# 将列名设置为之前提取出来的列名
all_data.columns = columns

# 将合并后的数据保存到一个新的Excel工作簿中
writer = pd.ExcelWriter('合并后.xlsx')
all_data.to_excel(writer, index=False)
writer.save()

冰菲 发表于 2023-5-26 14:32:23

isdkz 发表于 2023-5-26 14:19
可以尝试在将所有工作簿数据添加到all_data中之前,先将所有工作簿的列名提取出来,然后再将数据添加到all_ ...

我写的代码,列合并后是一致的,只是每个工作表里的前几行有合并单元格操作,所以我的代码运行后原合并单元格取消了
页: [1]
查看完整版本: python 求代码,一个文件夹中有多个工作簿并且里面表格式一样,如何合并后格式不变