【问题标题】:How to concat excels with multiple sheets into one excel?如何将多张工作表的excel合并为一个excel?
【发布时间】:2021-10-13 18:12:20
【问题描述】:

该文件夹包含至少 20 个 Excel。每个 excel 包含九张工作表。这些 excel 具有相同类型的工作表(相同的标题但不同的数据)。我需要将这 20 个 excel 逐页合并为一个 excel。每个excel中的前两张是说明。它们是可跳过的。我怎样才能做到这一点?谢谢!

示例:文件 A 表 3、文件 B 表 3、文件 A 表 4、文件 B 表 4

所以最终组合文件会是这样的:

【问题讨论】:

标签: python excel pandas dataframe xlrd


【解决方案1】:

不久前我不得不做一些类似的事情:

这段代码应该可以为您解决问题:

import pandas as pd
import os

collection = {}
for file in os.listdir():
    if file.endswith(".xlsx"):
        mysheets = pd.ExcelFile(file)
        mysheetnames = mysheets.sheet_names
        for i in mysheetnames[2:]: #change the 2 in [2:] to change how many sheets you delete
            mydata = pd.read_excel(file, i)
            combi = collection.get(i, [])
            collection[i] = combi + [mydata]

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')

for key in collection:
    myresult = pd.concat(collection.get(key), sort=False)
    myresult.to_excel(writer, sheet_name=key)

writer.save()

【讨论】:

  • 谢谢。出于某种原因,此代码仅创建一个 Excel 文件,每隔三张表连接一次。
  • 您是复制了我的代码,还是重新输入了代码?听起来你忘记了双点。例如你写的是:mysheetnames[2] 而不是mysheetnames[2:](区别是“:”)
  • 也许我对你的问题的解释不同,但问题是在 excel 文件中存在一张 1 表?并且您想维护您拥有的所有工作表名称?
  • 是的。您提供的代码仅使用一张工作表创建一个 excel(所有工作表来自不同的 excel),但我需要每个工作表单独组合。例如,文件 A 中的工作表 3 应与文件 B 中的工作表 3 组合,依此类推。所以结果文件最终应该有 9 张(在你的情况下是 7 张没有说明书)。
  • 还是一样。你试过你的代码了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 2019-11-15
  • 2014-12-14
  • 2016-11-13
相关资源
最近更新 更多