编程语言
首页 > 编程语言> > 【Python】将.xlsx文件内容读取为json格式 (Execl转换为Json)

【Python】将.xlsx文件内容读取为json格式 (Execl转换为Json)

作者:互联网

 

将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