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()
name | age | phone |
---|---|---|
zzl | 11 | 1111 |
解析多行的数据使用to_json2()
name | age | phone |
---|---|---|
zzl | 11 | 1111 |
zll | 12 | 1112 |
llz | 13 | 1113 |