方法一:按列读取数据(仅支持单条case)
# coding:utf-8 import ast import json import xlrd import xlwt from base.logger import * class execl_tools: # 获取xlsx内容 def get_xlsx_data(self): xlsx_pathname = r"../data/test_110.xlsx" # 打开xlsx文件 workbook = xlrd.open_workbook(xlsx_pathname) # 根据sheetname获取内容 sheet = workbook.sheet_by_name("110") # 获取总行/列数 rownum = sheet.nrows colnum = sheet.ncols logs.debug(f"{sheet.name} sheet总行数:{rownum}") logs.debug(f"{sheet.name} sheet总行数:{colnum}") # 定义一个list content = {} # 按列获取数据 for i in range(colnum): col_value = sheet.col_values(i) # 列名包含[]时 将value值进行处理 if '[]' in col_value[0]: logs.debug(f"array需要转换为object:{col_value}") col_value[0] = str(col_value[0]).replace("[]", "") col_value[1] = ast.literal_eval(col_value[1]) else: logs.debug(col_value) content.update({col_value[0]: col_value[1]}) logs.debug(json.dumps(content, ensure_ascii=False)) if __name__ == "__main__": execl_tools().get_xlsx_data()
执行结果:
方法二:按行读取数据(支持多条case)
# 获取xlsx内容 def get_xlsx_row_data(self): xlsx_pathname = r"../data/test_110.xlsx" # 打开xlsx文件 workbook = xlrd.open_workbook(xlsx_pathname) # 根据sheetname获取内容 sheet = workbook.sheet_by_name("110") # 获取总行/列数 rownum = sheet.nrows colnum = sheet.ncols logs.debug(f"{sheet.name} sheet总行数:{rownum}") logs.debug(f"{sheet.name} sheet总行数:{colnum}") # 定义一个list content = {} # 按行读取数据 for i in range(rownum): if i != 0: row_key = sheet.row_values(0) row_value = sheet.row_values(i) # logs.debug(row_key) # logs.debug(row_value) length = len(row_key) for j in range(length): if "[]" in row_key[j]: content.update({str(row_key[j]).replace("[]", ""): ast.literal_eval(row_value[j])}) else: content.update({row_key[j]: row_value[j]}) logs.debug(content)
执行结果: