获取excel数据写入json文件,由于excel写入的格式会影响请求数据,建议最好要用json数据作为请求数据,直接在json文件写入数据,可能会节约时间成本并提高请求数据的正确性
#coding:utf-8
import operator
import json
import xlrd
from utile.operation_excel import OperationExcel
class To_json:
def __init__(self,json_path):
self.opexcel=OperationExcel()
self.json_path=json_path
#读取excel文件
def read_excel_data(self):
self.opexcel.clear_blank_space()
data=[]
#获取sheet行数,这里的方法是自己封装的方法,详见操作excel封装方法博客文章
nrows=self.opexcel.get_lines()
print(self.opexcel.get_data())
#获取sheet第一行的列名
for i in range(1,nrows):
#每一行数据形成一个列表
values=self.opexcel.get_row_values(i)
# print('---2---')
print(type(values))
print(values)
#列表形成字典
data.append({'line_id':values[0],
'detect_date':values[1],
'coil_id':values[2],
'coil_id_input_status': values[3],
'coil_id_recognized':values[4],
'coil_id_correct': values[5],
'coil_id_camera_status': values[6],
'coil_id_images':values[7],
'coil_side_cracking': values[8],
'coil_side_cracking_camera_status': values[9],
'coil_side_cracking_images': values[10],
'coil_side_cracking_bbox': values[11],
'tower_shaped': values[12],
'tower_shaped_camera_status': values[13],
'tower_shaped_images': values[14],
})
return data
#写入json文件
def write_to_json(self):
with open(self.json_path,'w',encoding='utf-8')as f:
f.write(json.dumps(self.read_excel_data(),ensure_ascii=False,indent=2))
if __name__ == '__main__':
tojson=To_json('../dataconfig/data.json')
tojson.write_to_json()
去除excel空格和空行,这里之前一直报错int没有strip属性,把old转换成字符类型就ok了
#去除excel空格和空行
def clear_blank_space(self):
#加载文件
wb=load_workbook(self.file_name)
ws=wb.active
for i in range(1,ws.max_row+1):
for j in range(1,ws.max_column+1):
old=str(ws.cell(i,j).value)
if old is not None:
ws.cell(i, j).value = old.strip().replace(' ', '').replace("\n", "")
wb.save(self.file_name)
wb.close()
print('处理完成')