当前位置 : 主页 > 编程语言 > python >

python合并多个excel的详细过程

来源:互联网 收集:自由互联 发布时间:2023-01-30
目录 前言 代码编写 1.导包 2.定义位置和表头 3.获取要合并的所有exce表格 4.打开Exce文件 5.获取exce文件下的所有sheet 6.获取sheet下有多少行数据 7.获取sheet下的数据 8.主函数 完整代码 总结
目录
  • 前言
  • 代码编写
    • 1.导包
    • 2.定义位置和表头
    • 3.获取要合并的所有exce表格
    • 4.打开Exce文件
    • 5.获取exce文件下的所有sheet
    • 6.获取sheet下有多少行数据
    • 7.获取sheet下的数据
    • 8.主函数
  • 完整代码
    • 总结

      前言

      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内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

      上一篇:Pandas数据处理库画图与文件读取使用示例
      下一篇:没有了
      网友评论