excel - 将各种excel中的同名表合并为一张
问题描述
我正在尝试将多个具有相同名称的 Excel 中的工作表合并到一个 Excel 工作表中
已尝试以下代码:
import os
import pandas as pd
files = os.listdir("XXXX")
print("All files in the given directory are :", files)
files_xlsx = [f for f in files if f[-4:] == 'xlsx']
print("Excel files in this directory are :", files_xlsx)
y = "XXXX"
excels = [pd.ExcelFile(y +'\\'+ name) for name in files_xlsx]
for each in excels:
sheets =pd.ExcelFile(each).sheet_names
print ("Sheet names in these excel files are : ", sheets)
NSheets = len(sheets)
print ("Number of different Sheet names in these excel files are : ", NSheets)
for z in sheets:
frames = [x.parse(x.sheet_names[i], header=None,index_col=None) for x in excels]
frames[1:] = [df[1:] for df in frames[1:]]
combined = pd.concat(frames)
combined.to_excel("XXXX\\Output_" + z + ".xlsx", header=False, index=False)
这会导致使用不同的工作表名称创建多个文件,但所有这些工作表都具有与工作表 1 中相同的数据。数据不正确。
解决方案
我不是 100% 确定我是否完全理解您的问题,但我按照您的要求阅读了每个唯一的 Excel 工作表名称输入的 1 个输出 Excel 文件。如果是这样,那么试试这个:
import os
import pandas as pd
files = os.listdir("XXXX")
print("All files in the given directory are :", files)
files_xlsx = [f for f in files if f[-4:] == 'xlsx']
print("Excel files in this directory are :", files_xlsx)
y = "XXXX"
excels = [pd.ExcelFile(y +'\\'+ name) for name in files_xlsx]
for each in excels:
sheets =pd.ExcelFile(each).sheet_names
print ("Sheet names in these excel files are : ", sheets)
NSheets = len(sheets)
print ("Number of different Sheet names in these excel files are : ", NSheets)
for z in sheets:
frames = list()
for x in excels:
try:
x.sheet_names.index(z)
frames.append(x.parse(x.sheet_names.index(z), header=None, index_col=None))
frames[1:] = [df[1:] for df in frames[1:]] # keep only header from first file for each sheetname
combined = pd.concat(frames)
combined.to_excel("XXXX\\Output_" + z + ".xlsx", header=False, index=False)
except:
pass
如果我正确理解了您的问题,那么这应该可以满足您的要求。
PS:我添加了之前取出的行(只保留第一个标题),它似乎符合我的小测试样本的要求
推荐阅读
- autohotkey - (Autohotkey)需要帮助来选择带有“+1”东西的不同 Excel 单元格.. 或者我不知道如何调用它
- c++ - C++,指针,抛出异常:读取访问冲突。这是 0xFFFFFFFFFFFFFFFF5F
- javascript - 如何引用第一张纸中的一行?
- zig - 如何在 zig 中创建 2d 容器数组?
- vue.js - 如何在渲染功能中使用 v-slider 的 slot append?
- python-3.x - 有没有办法直接使用 python-3 自动将 .png 文件图像插入 .xlsb 文件?
- android - 为什么我无法从 Android 上的 GoogleMap Marker 获取触摸事件?
- genome - 如何显示 CTCF 结合位点重叠的统计显着性
- excel - 使用 Excel VBA 计算精确匹配
- c# - PrintScreen 和 BitBlt 导致屏幕闪烁