定义python读取Excel中的数据的方法

    技术2022-07-10  93

    Excel数据如下: 方法一———一次性读取所有数据

    #.只支持.xlsx--->openpyxl只支持这种格式 import openpyxl class DoExcel: '''file_name:文件名 sheet_name:指定sheet名 ''' def __init__(self, file_name, sheet_name): self.file_name = file_name self.sheet_name = sheet_name def get_data(self): wb = openpyxl.load_workbook(self.file_name) sheet = wb[self.sheet_name] test_data = [] for i in range(1, sheet.max_row+1): #遍历 读取每一行的数据 sub_data = {} sub_data['method'] = sheet.cell(i, 1).value sub_data['url'] = sheet.cell(i, 2).value sub_data['data'] = sheet.cell(i, 3).value sub_data['expected'] = sheet.cell(i, 4).value test_data.append(sub_data) #添加到test_data里面 return test_data #返回获取到的数据 if __name__ == '__main__': print(DoExcel("xh.xlsx", "python").get_data())

    打印结果:

    方法2-—根据传入的坐标来获取值

    from openpyxl import load_workbook class DoExcel: def __init__(self, file_name, sheet_name): self.file_name = file_name self.sheet_name = sheet_name self.sheet_obj = load_workbook(self.file_name)[self.sheet_name] #获取一个表达对象 def get_data(self, i, j): ''' 根据传入的坐标来获取值 ''' return self.sheet_obj.cell(i, j).value if __name__ == '__main__': print(DoExcel("xh.xlsx", "python").get_data(1, 1))

    打印结果:

    方法3-----获取到header 通过header遍历表单的数据

    import openpyxl class DoExcel: def __init__(self, file_name, sheet_name): self.file_name = file_name self.sheet_name = sheet_name def get_herader(self): '''获取第一行的标题数据''' wb = openpyxl.load_workbook(self.file_name) sheet = wb[self.sheet_name] herader = [] #存储我们的标题行 for j in range(1, sheet.max_column+1): herader.append(sheet.cell(1, j).value) return herader def get_data(self): '''根据嵌套循环读取数据''' wb = openpyxl.load_workbook(self.file_name) sheet = wb[self.sheet_name] header = self.get_herader() #拿到header test_data = [] for i in range(1, sheet.max_row+1): sub_data = {} for j in range(1, sheet.max_column+1): sub_data[header[j-1]] = sheet.cell(i, j).value test_data.append(sub_data) return test_data #返回获取到的数据 if __name__ == '__main__': print(DoExcel("xh.xlsx", "python").get_data()

    打印结果:

    Processed: 0.059, SQL: 9