如何用Python操作多个Excel文件合并(步骤清晰,一看就懂)

一、前言

想必工作中,会遇见将多个Excel文件合并成一个Excel文件,接下来完成如下步骤即可完成合并

注意注意:前提一定是列数及字段名称均相同

二、使用步骤

代码如下:

# -*- coding: utf-8 -*-


#1.导入需要使用的包
import xlrd  #读取Excel文件的包
import xlsxwriter   #将文件写入Excel的包




#2.打开一个excel文件
def open_xls(file):
    f = xlrd.open_workbook(file)
    return f


#3.获取excel中所有的sheet表
def getsheet(f):
    return f.sheets()


#4.获取sheet表的行数
def get_Allrows(f,sheet):
    table=f.sheets()[sheet]
    return table.nrows


#5.读取文件内容并返回行内容
def getFile(file,shnum):
    f=open_xls(file)
    table=f.sheets()[shnum]
    num=table.nrows
    for row in range(num):
        rdata=table.row_values(row)
        datavalue.append(rdata)
    return datavalue


#6.获取sheet表的个数
def getshnum(f):
    x=0
    sh=getsheet(f)
    for sheet in sh:
        x+=1
    return x






#7.函数入口
if __name__=='__main__':
    #定义要合并的excel文件列表
    allxls=['订单报表-2019-01.xls',
            '订单报表-2019-02.xls',
            '订单报表-2019-03.xls',
            '订单报表-2019-04.xls',
            '订单报表-2019-05.xls',
            '订单报表-2019-06.xls',
            '订单报表-2019-07.xls',
            '订单报表-2019-08.xls',
            '订单报表-2019-09.xls',
            '订单报表-2019-10.xls',
            '订单报表-2019-11.xls',
            '订单报表-2019-12.xls',
            '订单报表-2020-01.xls',
            '订单报表-2020-02.xls',
            '订单报表-2020-03.xls',
            '订单报表-2020-04.xls',
            '订单报表-2020-05.xls',
            '订单报表-2020-06.xls',
            '订单报表-2020-07.xls',
            '订单报表-2020-08.xls',
            '订单报表-2020-09.xls',
            '订单报表-2020-10.xls',
            '订单报表-2020-11.xls',
            '订单报表-2020-12.xls',
            '订单报表-2021-01.xls',
            '订单报表-2021-02.xls',
            '订单报表-2021-03.xls',
            '订单报表-2021-04.xls',
            '订单报表-2021-05.xls',
            '订单报表-2021-06.xls',
            '订单报表-2021-07.xls'
            ] #列表中的为要读取文件的路径
    #存储所有读取的结果
    datavalue=[]
    for fl in allxls:
        f=open_xls(fl)
        x=getshnum(f)
        for shnum in range(x):
            print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
            rvalue=getFile(fl,shnum)
    #定义最终合并后生成的新文件
    endfile='结果.xls'
    wb=xlsxwriter.Workbook(endfile)
    #创建一个sheet工作对象
    ws=wb.add_worksheet()
    for a in range(len(rvalue)):
        for b in range(len(rvalue[a])):
            c=rvalue[a][b]
            ws.write(a,b,c)
    wb.close()

    print("文件合并完成")

用Python读取后效果如图:

(数据为网上下载的虚拟数据,仅供学习数据上的参考使用)
在这里插入图片描述

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现多个Excel文件合并的方法主要有两种,一种是使用Python的pandas库,另一种是使用xlrd和xlwt库。 下面分别介绍这两种方法的实现步骤: 1. 使用pandas库 首先需要安装pandas库,可以使用pip install pandas命令进行安装。 合并Excel文件步骤如下: ① 导入pandas库和os库 ```python import pandas as pd import os ``` ② 定义一个函数,用于将多个Excel文件合并一个DataFrame对象 ```python def merge_excels(path): result = pd.DataFrame() for root, dirs, files in os.walk(path): for file in files: if file.endswith('.xlsx'): # 只处理xlsx文件 file_path = os.path.join(root, file) df = pd.read_excel(file_path) result = result.append(df) return result ``` ③ 调用merge_excels函数,将多个Excel文件合并一个DataFrame对象,并将结果保存到一个新的Excel文件中 ```python path = '/path/to/excels' result = merge_excels(path) result.to_excel('merged.xlsx', index=False) ``` 2. 使用xlrd和xlwt库 需要先安装xlrd和xlwt库,可以使用pip install xlrd xlwt命令进行安装。 合并Excel文件步骤如下: ① 导入xlrd和xlwt库 ```python import xlrd import xlwt import os ``` ② 定义一个函数,用于将多个Excel文件合并一个新的Excel文件 ```python def merge_excels(path): wb = xlwt.Workbook(encoding='utf-8') ws = wb.add_sheet('merged') row_num = 0 for root, dirs, files in os.walk(path): for file in files: if file.endswith('.xlsx'): # 只处理xlsx文件 file_path = os.path.join(root, file) workbook = xlrd.open_workbook(file_path) sheet = workbook.sheet_by_index(0) if row_num == 0: # 第一次循环需要写入表头 for i in range(sheet.ncols): ws.write(row_num, i, sheet.cell_value(0, i)) row_num += 1 for j in range(1, sheet.nrows): # 从第二行开始写入数据 for k in range(sheet.ncols): ws.write(row_num, k, sheet.cell_value(j, k)) row_num += 1 return wb ``` ③ 调用merge_excels函数,将多个Excel文件合并一个新的Excel文件,并保存到本地 ```python path = '/path/to/excels' wb = merge_excels(path) wb.save('merged.xls') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值