python合并多个excel的详细过程

 更新时间:2022年10月05日 08:21:16   作者:qi66  
合并需求很多,常见的有相同数据结构,按行进行纵向拼接,下面这篇文章主要给大家介绍了关于python合并多个excel的相关资料,需要的朋友可以参考下

前言

1.工作中,经常需要合并多个Excel文件。如果文件数量比较多,则工作量大,易出错,此时,可以使用Python来快速的完成合并。

2.使用方法:将需要合并的多个Excel文件放到同一个文件夹下,程序运行后,输入文件夹目录的地址即可,完成合并后会将合并后的文件放在当前目录下。

3.可以查看代码的详细编写,或者直接到最后复制完整代码使用。

代码编写

1.导包

import os
import xlrd
import xlsxwriter
import glob

2.定义位置和表头

biao_tou = "NULL"
wei_zhi = "NULL"

3.获取要合并的所有exce表格

def get_exce():
    global wei_zhi
    wei_zhi = input("请输入Excel文件所在的目录:")
    all_exce = glob.glob(wei_zhi + "*.xls")
    print("该目录下有" + str(len(all_exce)) + "个excel文件:")
    if (len(all_exce) == 0):
        return 0
    else:
        for i in range(len(all_exce)):
            print(all_exce[i])
        return all_exce

4.打开Exce文件

def open_exce(name):
    fh = xlrd.open_workbook(name)
    return fh

5.获取exce文件下的所有sheet

# 获取exce文件下的所有sheet
def get_sheet(fh):
    sheets = fh.sheets()
    return sheets

6.获取sheet下有多少行数据

def get_sheetrow_num(sheet):
    return sheet.nrows

7.获取sheet下的数据

def get_sheet_data(sheet, row):
    for i in range(row):
        if (i == 0):
            global biao_tou
            biao_tou = sheet.row_values(i)
            continue
        values = sheet.row_values(i)
        all_data1.append(values)

    return all_data1

8.主函数

if __name__ == '__main__':
    all_exce = get_exce()
    # 得到要合并的所有exce表格数据
    if (all_exce == 0):
        print("该目录下无.xls文件!请检查您输入的目录是否有误!")
        os.system('pause')
        exit()

    all_data1 = []
    # 用于保存合并的所有行的数据

    # 下面开始文件数据的获取
    for exce in all_exce:
        fh = open_exce(exce)
        # 打开文件
        sheets = get_sheet(fh)
        # 获取文件下的sheet数量

        for sheet in range(len(sheets)):
            row = get_sheetrow_num(sheets[sheet])
            # 获取一个sheet下的所有的数据的行数

            all_data2 = get_sheet_data(sheets[sheet], row)
            # 获取一个sheet下的所有行的数据

    all_data1.insert(0, biao_tou)
    # 表头写入

    # 下面开始文件数据的写入
    new_exce = wei_zhi + "总数据.xlsx"
    # 新建的exce文件名字

    fh1 = xlsxwriter.Workbook(new_exce)
    # 新建一个exce表

    new_sheet = fh1.add_worksheet()
    # 新建一个sheet表

    for i in range(len(all_data1)):
        for j in range(len(all_data1[i])):
            c = all_data1[i][j]
            new_sheet.write(i, j, c)

    fh1.close()
    # 关闭该exce表

    print("文件合并成功,请查看“" + wei_zhi + "”目录下的总数据.xlsx文件!")

    os.system('pause')
    os.system('pause')

完整代码

import os
import xlrd
import xlsxwriter
import glob

biao_tou = "NULL"
wei_zhi = "NULL"

# 获取要合并的所有exce表格
def get_exce():
    global wei_zhi
    wei_zhi = input("请输入Excel文件所在的目录:")
    all_exce = glob.glob(wei_zhi + "*.xls")
    print("该目录下有" + str(len(all_exce)) + "个excel文件:")
    if (len(all_exce) == 0):
        return 0
    else:
        for i in range(len(all_exce)):
            print(all_exce[i])
        return all_exce

# 打开Exce文件
def open_exce(name):
    fh = xlrd.open_workbook(name)
    return fh

# 获取exce文件下的所有sheet
def get_sheet(fh):
    sheets = fh.sheets()
    return sheets

# 获取sheet下有多少行数据
def get_sheetrow_num(sheet):
    return sheet.nrows

# 获取sheet下的数据
def get_sheet_data(sheet, row):
    for i in range(row):
        if (i == 0):
            global biao_tou
            biao_tou = sheet.row_values(i)
            continue
        values = sheet.row_values(i)
        all_data1.append(values)

    return all_data1

if __name__ == '__main__':
    all_exce = get_exce()
    # 得到要合并的所有exce表格数据
    if (all_exce == 0):
        print("该目录下无.xls文件!请检查您输入的目录是否有误!")
        os.system('pause')
        exit()

    all_data1 = []
    # 用于保存合并的所有行的数据

    # 下面开始文件数据的获取
    for exce in all_exce:
        fh = open_exce(exce)
        # 打开文件
        sheets = get_sheet(fh)
        # 获取文件下的sheet数量

        for sheet in range(len(sheets)):
            row = get_sheetrow_num(sheets[sheet])
            # 获取一个sheet下的所有的数据的行数

            all_data2 = get_sheet_data(sheets[sheet], row)
            # 获取一个sheet下的所有行的数据

    all_data1.insert(0, biao_tou)
    # 表头写入

    # 下面开始文件数据的写入
    new_exce = wei_zhi + "总数据.xlsx"
    # 新建的exce文件名字

    fh1 = xlsxwriter.Workbook(new_exce)
    # 新建一个exce表

    new_sheet = fh1.add_worksheet()
    # 新建一个sheet表

    for i in range(len(all_data1)):
        for j in range(len(all_data1[i])):
            c = all_data1[i][j]
            new_sheet.write(i, j, c)

    fh1.close()
    # 关闭该exce表

    print("文件合并成功,请查看“" + wei_zhi + "”目录下的总数据.xlsx文件!")

    os.system('pause')
    os.system('pause')

总结

到此这篇关于python合并多个excel的文章就介绍到这了,更多相关python合并多个excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python发腾讯微博代码分享

    python发腾讯微博代码分享

    本文介绍了利用qwebview写的一个发腾讯微博的功能,大家可以改成新浪微博,原理是一样的,大家参考使用吧
    2014-01-01
  • 使用Python实现Oracle数据库自动巡检程序

    使用Python实现Oracle数据库自动巡检程序

    这篇文章主要为大家详细介绍了如何创建一个Oracle数据库自动巡检程序,以确保数据库的顺畅运行,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • Python正则表达式急速入门(小结)

    Python正则表达式急速入门(小结)

    这篇文章主要介绍了Python正则表达式急速入门(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python中的for循环

    python中的for循环

    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。这篇文章主要介绍了python的for循环,需要的朋友可以参考下
    2018-09-09
  • 对python实现模板生成脚本的方法详解

    对python实现模板生成脚本的方法详解

    今天小编就为大家分享一篇对python实现模板生成脚本的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • django 消息框架 message使用详解

    django 消息框架 message使用详解

    这篇文章主要介绍了django 消息框架 message使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 跟老齐学Python之传说中的函数编写条规

    跟老齐学Python之传说中的函数编写条规

    在使用函数的时候,首先要把它放在对象的层面考量,它不是什么特殊的东西,尽管我们使用了不少篇幅讲述它,但它终归还是一个对象。
    2014-10-10
  • 我在七夕佳节用Python制作的表白神器,程序员也应该拥有爱情!建议收藏

    我在七夕佳节用Python制作的表白神器,程序员也应该拥有爱情!建议收藏

    这篇文章主要介绍了我在七夕佳节用Python制作的表白神器,建议收藏,程序员也该拥有爱情,感兴趣的小伙伴快来看看吧
    2021-08-08
  • Python读取csv文件做K-means分析详情

    Python读取csv文件做K-means分析详情

    这篇文章主要介绍了Python读取csv文件做K-means分析详情,基于时间序列的分析2D读取时间列和高程做一下分析。下文更多详细介绍需要的小伙伴可以参考一下
    2022-03-03
  • 详解centos7+django+python3+mysql+阿里云部署项目全流程

    详解centos7+django+python3+mysql+阿里云部署项目全流程

    这篇文章主要介绍了详解centos7+django+python3+mysql+阿里云部署项目全流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论