python 读取excel并输出为json

本文介绍如何使用Python的openpyxl库读取Excel文件,并将其转换为JSON格式。针对xlwt和xlrd处理大量数据和多列限制的问题,文章提供了解决方案,演示了从Excel读取数据、修改单元格值、替换特定字符串以及将数据转换为JSON的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 读取excel并输出为json


xlwt 与xlrd 存在的问题

最开始使用xlwt,xlrd进行读取和写入,发现报错

ValueError: column index (256) not an int in range(256)

我需要处理的excel有300多条,
xlwt不能操作256列以上的数据,我们使用openpyxl

import json

from openpyxl import load_workbook

file = "1.xlsx" 
un_use_str = '123.'


class ExcelUtils:
    def __init__(self):
        self.file = file
        self.wb = load_workbook(self.file)
        sheets = self.wb.get_sheet_names()
        self.sheet = sheets[0]
        self.ws = self.wb[self.sheet]

    # 行数
    def get_rows(self):
        rows = self.ws.max_row
        return rows

    # 列数
    def get_clos(self):
        clo = self.ws.max_column
        return clo

    # 获取值
    def get_cell_value(self, row, column):
        cell_value = self.ws.cell(row=row, column=column).value
        return cell_value

    # 修改值并保存
    def set_cell_value(self, row, column, cell_value):
        try:
            self.ws.cell(row=row, column=column).value = cell_value
            self.wb.save(self.file)
        except Exception as e:
            print("error :{}".format(e))
            self.wb.save(self.file)

    # 替换单元格中的内容
    def replace_cell_value(self):
        # 遍历第一行的值,
        for i in range(1, self.get_clos() + 1):
            cell_value = self.get_cell_value(1, i)
            # 是否存在需要替换的值
            if un_use_str in cell_value:
                cell_replace = cell_value.replace(un_use_str, "")
                self.set_cell_value(1, i, cell_replace)


def to_json():
    excel_utils = ExcelUtils()
    excel_dict = {}

    clo = excel_utils.get_clos()
    # 遍历excel中的值存入字典中
    for i in range(1, clo + 1):
        dict_key = excel_utils.get_cell_value(1, i)
        dict_value = excel_utils.get_cell_value(2, i)
        excel_dict[dict_key] = dict_value
    # 字典转json
    excel_json = json.dumps(excel_dict)
    return excel_json

def to_json2():
    excel_utils = ExcelUtils()
    excel_list= []

    clo = excel_utils.get_clos()
    # 遍历excel中的值存入字典中
    for j in range(2,excel_utils.get_rows()+1):
        excel_dict = {}
        for i in range(1, clo + 1):
            dict_key = excel_utils.get_cell_value(1, i)
            dict_value = excel_utils.get_cell_value(j, i)
            excel_dict[dict_key] = dict_value
        excel_list.append(excel_dict)

    # 字典转json
    excel_json = json.dumps(excel_list)
    return excel_json

if __name__ == "__main__":
       # 只有两行数据的情况
    compare_json = to_json()
    print(compare_json)

    # 多行数据的情况
    compare_json = to_json2()
    print(compare_json)

可以不用再类中写方法,这里主要是本人用来熟悉python语法
代码中file 是指 excel的路径
un_use_str 是指需要在excel中匹配替换的字符串,如果没有用到可以填"",
excel中的格式为下所示
解析两行的数据使用:to_json()

nameagephone
zzl111111

解析多行的数据使用to_json2()

nameagephone
zzl111111
zll121112
llz131113

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值