• Python读取众多Excel表格中的sheet并整合到一个新的Excel


    • 需求简介
      如果你想在一百个或者甚至更多个Excel中提取相同的sheet,并整合到一个新的Excel,该怎么做?
      我是想将所有要整理的表格放到与py脚本同文件夹里,进行操作。以下是个人的思路和方法:

      # -!- coding: utf-8 -!-
      import os
      import xlrd
      import xlwt
      import pytest
      import xlsxwriter
      
      
      # 读取excel文件
      def get_excel(excel):
          f = xlrd.open_workbook(excel)
          return f
      
      
      # 获取excel中的所有sheet表
      def get_sheet(excel):
          return get_excel(excel).sheets()
      
      
      # 获取excal中的所有sheet表名
      def get_sheet_name(excel):
          return get_excel(excel).sheet_names()
      
      
      # 获取excel的sheet表个数
      def get_sheet_num(excel):
          n = 0
          sheets = get_sheet(excel)
          sheets_name = get_sheet_name(excel)
          # print(sheets_name)
          for i in sheets:
              n += 1
          return n
      
      
      # 获取excel每个sheet表的行数
      def get_sheet_rows(excel, sheetpage):
          table = get_sheet(excel)[sheetpage]
          return table.nrows
      
      
      # 读取excel文件对应sheet行内容
      def get_excel_file(excel, sheetpage):
          table = get_sheet(excel)[sheetpage]
          rows = table.nrows
          # print(rows)
          data_value = []
          for row in range(rows):
              # 返回该行中所有单元格数据组成的列表
              data = table.row_values(row)
              data_value.append(data)
          return data_value
      
      
      if __name__ == '__main__':
          # 定义合并后的目标文件
          end_excel = xlwt.Workbook(encoding='utf-8')        # 新建工作簿
          sheet1 = end_excel.add_sheet("Test Coverage")        # 新建sheet
          sheet2 = end_excel.add_sheet("Test Cases")       # 新建sheet
          end_excel.save(r'./test.xlsx') 
      
          current_path = os.path.dirname(os.path.abspath(__file__))
          excel = []
          for e in os.listdir(current_path):
              if not e.endswith("test.xlsx") and not e.endswith(".py"):        #      排除掉此目录下的py文件和生成的结果文件
                  excel.append(e)
          data_value1 = []
          data_value2 = []
          # print('excel:', excel)
          # 循环取得第n个excel 写第一个sheet
          sum1 = 0
          sum2 = 0
          for n in range(len(excel)):       # 循环遍历Excel文件
              try:
                  print(f"excel name ===== >{excel[n]}" )
                  sheet_num = get_sheet_num(excel[n])      # 获取Excel文件夹里面有几个sheet 这里我是取得第几个sheet
                  if sheet_num == 4:                                        # 我所需要取的表的顺序一致 所以我就直接取了
                      data1 = get_excel_file(excel[n], 2)            # 也可以根据你想要的sheet名来取
                      data2 = get_excel_file(excel[n], 3)
                      if n != 0:
                          del data1[0]            # 第一个excel里面已经有了第一行的概括,所以接下来的copy中我们应该删除第一行的重复类容
                          del data2[0]
                      for m in range(len(data1)):            # 对获取第一个内容进行重写操作
                          newdata1 = data1[m]                  # 遍历获取所有的内容
                          for k in range(len(newdata1)):        # 遍历获取该内容里面的内容 并进行写入
                              sheet1.write(sum1, k, newdata1[k])       # sum1 是行数 k是列数
                              end_excel.save(r'./test.xlsx')
                          sum1 += 1                  # 行数写一次增加一次
      
                      for p in range(len(data2)):            # 同理对第二个内容进行写入
                          newdata2 = data2[p]
                          for k in range(len(newdata2)):
                              sheet2.write(sum2, k, newdata2[k])
                              end_excel.save(r'./test.xlsx')
                          sum2 += 1
                      print('转换中...')
                  else:
                      print(get_sheet_name(excel[n]), 'sheet表格缺少sheet')      # 我读取的Excel默认是4个sheet 如果不对我可以将不符合要求的Excel找出来
                      error = get_excel(excel[n])
                      tips = 'sheet表格缺少sheet'
                      path = os.getcwd()            # 在当前路径下写入log
                      name = 'error.txt'            
                      with open(name, "a") as f:
                          f.write(str(error))
                          f.write(tips + '
      ')
                  print('第' + str(n) + '个文件' + '转换成功')
              except Exception as e:
                  print(f"excel name ===== >{excel[n]}")      # 异常处理
                  print(f"error is {str(e)}")
  • 相关阅读:
    kernel_size
    pytorch:修改预训练模型
    Python yield使用浅析
    respberry2b + android5.1
    android中调用c++文件并转为so
    图像灰度化
    图像的高斯平滑滤波
    历届试题 分考场
    头发啊头发
    历届试题 合根植物
  • 原文地址:https://www.cnblogs.com/blackpink/p/13975399.html
Copyright © 2020-2023  润新知