python 合并Excel中已有的N个sheet,并且把合并后的数据保存为新的sheet

之前想把一个工作簿中结构相同的多个sheet进行合并,由于sheet太多,不可能手动完成,又不会VBA编程,所以就谢了一个实现此功能的python程序。希望对有相同需求的兄弟姐妹有帮助。

用到的Python模块如下:

  • xlrd
  • pandas
  • openpyxl

xlrd、pandas、openpyxl

1、python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
2、pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。pandas具体的用法可以参考博客https://blog.csdn.net/liufang0001/article/details/77856255/
3、openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。openpyxl中有三个不同层次的类,Workbook是对工作簿的抽象,Worksheet是对表格的抽象,Cell是对单元格的抽象,每一个类都包含了许多属性和方法。

Excel工作簿结构

想要解决的Excel工作簿如图:
sheets:
N个sheet
每个sheet的结构相同:
字段相同
那我们就可以用下面的程序实现所有sheet进行合并,并且把合并的数据保存到新的sheet中。详细代码如下:

代码块

# -*- coding: UTF-8 -*-
#导入所需模块
import xlrd
import pandas as pd
from  pandas import DataFrame
from openpyxl import load_workbook

excel_name = 'C:\Users\Administrator.EIT-20130101CMN\Desktop\\aaa.xlsx'  #表格地址+表格名
wb = xlrd.open_workbook(excel_name) 
# 获取workbook中所有的表格
sheets = wb.sheet_names()
# print sheets

# 循环遍历所有sheet
alldata = DataFrame()
for i in range(len(sheets)):
    df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')
    alldata = alldata.append(df)
#查看dataframe
#print alldata

#保存为新的sheet,首先新建sheet,合并后的数据保存到新sheet中
writer = pd.ExcelWriter('C:\Users\Administrator.EIT-20130101CMN\Desktop\\aaa.xlsx',engin='openpyxl')
book = load_workbook(writer.path)
writer.book = book

#利用dataframe.to_excel保存合并后的数据到新的sheet
alldata.to_excel(excel_writer=writer,sheet_name="ALLDATA")#生成新的sheet命名为ALLDATA
writer.save()
writer.close()
print '处理完成!'

查看结果

执行上面的程序,打开处理的Excel工作簿,你会发现其中多出一个名为ALLDATA的sheet,此sheet即为目标sheet,存储的是所有合并后的数据。如图:
这里写图片描述
这里写图片描述

这就完成了,其实很简单吧!

  • 10
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 可以使用pandas库的read_excel方法读取Excel文件为DataFrame,然后使用pandas的merge函数合并两个DataFrame,最后使用to_excel方法将合并后的DataFrame存入Excel文件。具体代码如下: ``` import pandas as pd # 读取Excel文件1 df1 = pd.read_excel('file1.xlsx') # 读取Excel文件2 df2 = pd.read_excel('file2.xlsx') # 合并两个DataFrame df_merged = pd.merge(df1, df2, on='column_name') # 存入Excel文件 df_merged.to_excel('merged_file.xlsx', index=False) ``` 在上述代码,使用read_excel函数读取两个Excel文件,并将其转换为DataFrame。使用merge函数在指定列上合并两个DataFrame,并将合并后的结果存入Excel文件(可以通过指定index参数为False来避免在Excel文件存储DataFrame的索引)。 ### 回答2: 在Python,可以使用pandas库来处理Excel文件,实现将Excel文件读取成一个DataFrame,并将这个DataFrame与另一个已有的DataFrame合并,然后再将结果存入Excel文件。 下面是具体的代码实现: 1. 首先,导入所需的库: ```python import pandas as pd ``` 2. 读取Excel文件并生成DataFrame: ```python df1 = pd.read_excel('文件名.xlsx', sheet_name='工作表名') ``` 这里`文件名`是要读取的Excel文件的名字,`工作表名`是要读取的具体工作表的名字,如果只有一个工作表可以省略该参数。 3. 创建另一个DataFrame: ```python df2 = pd.DataFrame({'列名1': [值1, 值2, ...], '列名2': [值1, 值2, ...], ...}) ``` 这里的`列名`是要创建的DataFrame的列的名字,`值`是对应的每个单元格的值,可以根据需求进行调整。 4. 合并两个DataFrame: ```python merged_df = pd.concat([df1, df2], axis=0, ignore_index=True) ``` 这里使用了`concat`函数将两个DataFrame合并,`axis=0`表示按照行的方向进行合并,`ignore_index=True`表示重置合并后的DataFrame的索引。 5. 将合并后的DataFrame存入Excel文件: ```python merged_df.to_excel('文件名.xlsx', sheet_name='工作表名', index=False) ``` 这里使用了DataFrame的`to_excel`方法,将合并后的DataFrame写入到指定的Excel文件,`index=False`表示不将索引写入文件。 通过上述步骤,就可以实现将Excel文件读取成一个DataFrame,然后与另一个已有的DataFrame合并后再存入这个Excel文件。当然,具体的代码还需要根据实际情况进行调整。 ### 回答3: 使用Python的pandas库可以很方便地实现将Excel文件读取为一个DataFrame,并与已有的另一个DataFrame合并后再将结果存入同一个Excel文件。 首先,需要安装pandas库,可以使用pip install pandas命令进行安装。 接下来,可以使用pandas的read_excel函数将Excel文件读取为一个DataFrame: ``` import pandas as pd # 读取Excel文件为DataFrame df1 = pd.read_excel('文件路径/文件名.xlsx') ``` 接着,可以使用pandas的merge函数将两个DataFrame合并: ``` df2 = pd.DataFrame({'列1': [值1, 值2, ...], '列2': [值1, 值2, ...], ...}) # 另一个DataFrame # 合并两个DataFrame merged_df = pd.merge(df1, df2, on='共同列名', how='合并方式') ``` 合并方式有多种选择,例如:inner代表取交集,outer代表取并集,left代表以第一个DataFrame为准等等。并且可以根据具体需求,选择适合的合并方式。 最后,可以使用pandas的to_excel函数将合并后的DataFrame写入同一个Excel文件: ``` # 存入同一个Excel文件 merged_df.to_excel('文件路径/文件名.xlsx', index=False) ``` index=False参数表示不写入行索引到Excel文件。 以上就是使用PythonExcel文件读取为DataFrame,并与已有的另一个DataFrame合并后再存入同一个Excel文件的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值