ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-03-04 10:04:03  阅读:236  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有