鱼C论坛

 找回密码
 立即注册
查看: 2490|回复: 7

[已解决]合并excel

[复制链接]
发表于 2023-2-20 16:04:56 | 显示全部楼层 |阅读模式

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

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

x
请教各位大佬,有三个文件夹,名称分别是营业额、客流、客单价,然后每个文件夹里都有多张表,名字都一样,是北京、苏州、上海,请问怎么可以根据城市的名称,把营业额、客流、客单价三张表按照对应的名称作为工作簿名称,存放在一个excel里
最佳答案
2023-2-20 21:32:28
你可以使用 Python 的 Pandas 库和 openpyxl 库来实现该功能,其中 Pandas 用于读取和处理 Excel 文件,openpyxl 用于创建和保存 Excel 文件。

具体步骤如下:

首先,安装 pandas 和 openpyxl 库,可以使用以下命令:
python
Copy code
pip install pandas openpyxl
读取每个文件夹下的 Excel 文件,将它们存储为 Pandas 数据帧(DataFrame)对象,并用文件夹名称作为数据帧名称:
python
Copy code
import pandas as pd
import os

# 设置文件夹路径
folder_paths = ['营业额', '客流', '客单价']

# 定义空的字典,用于存储数据帧
data_frames = {}

for folder_path in folder_paths:
    # 获取文件夹下所有的Excel文件
    files = os.listdir(folder_path)
   
    # 读取每个Excel文件并存储为数据帧
    for file in files:
        city = os.path.splitext(file)[0] # 获取文件名,即城市名称
        file_path = os.path.join(folder_path, file) # 获取文件路径
        df = pd.read_excel(file_path)
        
        # 将数据帧存储到字典中,并以文件夹名称和城市名称作为键
        key = folder_path + '_' + city
        data_frames[key] = df
创建一个 Excel 文件,将数据帧存储到不同的工作表中:
python
Copy code
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

# 创建一个工作簿
wb = Workbook()

# 将数据帧存储到工作表中
for key, df in data_frames.items():
    sheet_name = key.replace('_', '-') # 将键中的 '_' 替换为 '-'
    sheet = wb.create_sheet(sheet_name)
   
    # 将数据帧的内容写入工作表中
    for r in dataframe_to_rows(df, index=False, header=True):
        sheet.append(r)

# 保存工作簿
wb.save('output.xlsx')
这样,就可以将所有的数据帧按照城市名称和文件夹名称存储到一个 Excel 文件中,并以文件夹名称和城市名称作为工作表名称。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-20 16:38:47 | 显示全部楼层
听起来没有复杂的计算,copy,按照你的格式要求paste就行。
有实际的文件吗,网盘分享看看。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 19:50:18 | 显示全部楼层
新鱼油能改头像???

xlwings 可以
pip install xlwings -i 国内镜像源,搜“pip国内”就行
然后访问 百度(意思是自己搜吧,我这没电脑)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 21:12:12 | 显示全部楼层
用xlwrings库,可以带格式全部复制
遍历文件夹
获取目录名称
然后创建个新文件
然后读取旧文件copy到新文件里
保存新文件即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 21:32:28 | 显示全部楼层    本楼为最佳答案   
你可以使用 Python 的 Pandas 库和 openpyxl 库来实现该功能,其中 Pandas 用于读取和处理 Excel 文件,openpyxl 用于创建和保存 Excel 文件。

具体步骤如下:

首先,安装 pandas 和 openpyxl 库,可以使用以下命令:
python
Copy code
pip install pandas openpyxl
读取每个文件夹下的 Excel 文件,将它们存储为 Pandas 数据帧(DataFrame)对象,并用文件夹名称作为数据帧名称:
python
Copy code
import pandas as pd
import os

# 设置文件夹路径
folder_paths = ['营业额', '客流', '客单价']

# 定义空的字典,用于存储数据帧
data_frames = {}

for folder_path in folder_paths:
    # 获取文件夹下所有的Excel文件
    files = os.listdir(folder_path)
   
    # 读取每个Excel文件并存储为数据帧
    for file in files:
        city = os.path.splitext(file)[0] # 获取文件名,即城市名称
        file_path = os.path.join(folder_path, file) # 获取文件路径
        df = pd.read_excel(file_path)
        
        # 将数据帧存储到字典中,并以文件夹名称和城市名称作为键
        key = folder_path + '_' + city
        data_frames[key] = df
创建一个 Excel 文件,将数据帧存储到不同的工作表中:
python
Copy code
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

# 创建一个工作簿
wb = Workbook()

# 将数据帧存储到工作表中
for key, df in data_frames.items():
    sheet_name = key.replace('_', '-') # 将键中的 '_' 替换为 '-'
    sheet = wb.create_sheet(sheet_name)
   
    # 将数据帧的内容写入工作表中
    for r in dataframe_to_rows(df, index=False, header=True):
        sheet.append(r)

# 保存工作簿
wb.save('output.xlsx')
这样,就可以将所有的数据帧按照城市名称和文件夹名称存储到一个 Excel 文件中,并以文件夹名称和城市名称作为工作表名称。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 22:56:40 | 显示全部楼层
你可以使用Python中的pandas库来实现这个需求。以下是一个可能的实现方法:

首先,你需要安装pandas库。你可以使用以下命令在命令行中安装它:
pip install pandas
接下来,你可以使用以下代码来实现你的需求:
mport pandas as pd
import os

# 设置文件夹路径和城市名称列表
folders = ['营业额', '客流', '客单价']
cities = ['北京', '苏州', '上海']

# 创建一个空的excel文件
excel_file = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')

# 遍历每个文件夹
for folder in folders:
    # 创建一个空的dataframe列表
    dfs = []
    # 遍历每个城市
    for city in cities:
        # 拼接文件路径
        file_path = os.path.join(folder, f"{city}.xlsx")
        # 读取excel文件中名为Sheet1的工作簿,如果有多个工作簿,需要指定工作簿名称
        df = pd.read_excel(file_path, sheet_name='Sheet1')
        # 将数据框添加到列表中
        dfs.append(df)
    # 将数据框列表拼接成一个大的数据框,axis=1表示按列拼接
    result_df = pd.concat(dfs, axis=1)
    # 将数据框写入到Excel文件中,并指定工作簿名称
    result_df.to_excel(excel_file, sheet_name=folder, index=False)

# 关闭Excel文件
excel_file.close()
这个代码会遍历每个文件夹和城市,将对应的数据框拼接成一个大的数据框,并将其写入到一个新的Excel文件中。在这个Excel文件中,每个文件夹对应一个工作簿,工作簿名称分别是“营业额”、“客流”和“客单价”。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 23:18:41 | 显示全部楼层
我的回答去审核了…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-9 14:14:40 | 显示全部楼层
bluesky5210 发表于 2023-2-20 21:32
你可以使用 Python 的 Pandas 库和 openpyxl 库来实现该功能,其中 Pandas 用于读取和处理 Excel 文件,ope ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 09:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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