标签:Execl xlsx sheet Python value debug col row
将execl 表格数据转换为json
方法一:按列读取数据(仅支持单条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)
执行结果:
execl数据
标签:Execl,xlsx,sheet,Python,value,debug,col,row 来源: https://www.cnblogs.com/phoenixy/p/15960701.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。