鱼C论坛

 找回密码
 立即注册
查看: 928|回复: 2

关于python 合并带个多个sheet 的excel 表格

[复制链接]
发表于 2021-9-15 23:02:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 weiyideid823 于 2021-9-15 23:03 编辑

请教下大神,我在已实现case 1 的情况下,如何改变才能实现case2?

case1 : 实现合并200个excel 表,但是每个excel 表仅含有一个sheet
case2:  实现合并200个excel 表,但是每个excel 表含有5个sheet,且各个excel 表的1-5个sheet 需相应合并,即合并之后的总表依然含5 个sheet

我case1 的代码如下:
import pandas as pd
import os
import time

# 获取当前路径及路径下的所有文件
path = os.getcwd()
files = os.listdir(path)
Output = pd.DataFrame()

# 获取路径下文件格式
for filename in files:
    filetype = filename.split(".")[1]

  
    # 遍历表格格式
    if filetype in ["xlsx","xls","xlsm"]:
        sheetnames = pd.ExcelFile(filename).sheet_names
        for sheetname in sheetnames:
            content = pd.read_excel(filename, sheetname)
            len_Content = content.shape[0]
            Output=Output.append(content)
    elif filetype == "csv":
        content = pd.read_csv(filename)
        len_Content = content.shape[0]
        Output = Output.append(content)
Output.to_excel(path + "\Output.xlsx")

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-16 10:15:00 | 显示全部楼层

两百个表的 五个对应位置的 sheet 名称都相同吗?

相同的话直接 for 循环遍历 sheet_names 表,内部在来个 for 循环 分别读取 200 个表

第一次循环将表全部读取后,用 pd.concat 函数全部拼接起来即可,

相当于执行五次大循环,大循环内每次小循环读取 200 次表 ,全部读取完后用 pd.concat 拼接

试试看吧~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-16 21:24:23 | 显示全部楼层
Twilight6 发表于 2021-9-16 10:15
两百个表的 五个对应位置的 sheet 名称都相同吗?

相同的话直接 for 循环遍历 sheet_names 表,内部在 ...

都相同的
200 个excel 表都包含5个相同sheet 名,然后需要做的是将200个表中相同sheet 名的sheet 合并成一个输出一个总表,总表依然含有5个sheet
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 08:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表