python-excel操作-(2)(读数据,封装成类)

class ExcelHandle_1:

  def __init__(self,file_name,sheet_name):

    #file_name为文件存放地址,sheet_name为表单名字
    self.file_name=file_name

    self.sheet_name=sheet_name

    #打开file_name这个.xlsx文件
    self.wb=openpyxl.load_workbook(file_name)

  #读取指定表单得所有数据,并以dict形式输出

  def read_all(self,sheet_name):

    #对输入表单进行判断,若没有输入就默认生成第一个表单位置
    if sheet_name is None:
      ws=self.wb.active
    else:
      ws=self.wb.get_sheet_by_name(sheet_name)

      #通过遍历拿取表头得信息,并以列表得形式返回
      header=[c.value for c in ws[1]]

      #通过获取最大row与column进行遍历 使用cell().value方法拿到所有值并返回列表,并与表头得列表信息使用diz方法进行重新组合成一对一关系,并转换成字典返回
      max_row=ws.max_row
      max_column=ws.max_column
      test_data=[]
      for row in range(2,max_row+1):
        row_data=[]
        for coloumn in range(1,max_column+1):
          row_data.append(ws.cell(row,coloumn).value)
        row_data=dict(zip(header,row_data))
        test_data.append(row_data)
      return test_data
  #写入数据,需要写入得数据需要是str类型
  def write_data(self,row,result,actul):
    sheet=self.wb.get_sheet_by_name(self.sheet_name)
    column_result=eval(Read_config(Config_Http).get_value('excelcolumn','column_result'))
    column_actual=eval(Read_config(Config_Http).get_value('excelcolumn','column_catual'))
    #修改坐标row,column的值
    sheet.cell(row,column_result).value=result
    sheet.cell(row,column_actual).value=actul
    #保存文档
    self.save_data()
    #保存数据并关闭文档
  def save_data(self):
    self.wb.save(self.file_name)
    self.wb.close()

你可能感兴趣的:(python-excel操作-(2)(读数据,封装成类))