最近需要读很多json文件,读到的数据放入excel里。
梳理了一下流程:
1. 导入os,glob模块,读取不同文件夹的不同json文件,放入excel不同的位置
2. 导入json模块,读取json文件,查看json文件格式,是否有乱码,手动处理或者代码中处理
3. 导入xlwt模块,写Excel,将可以固定的内容写入excel,作为模版
主要难点:
1. 如何读取多个人的数据(json文件)。
2. 如何判断每个人的文件夹里的Question都有哪些,有的读出来放到excel相应位置,没有的怎么办,是用一个符号代替,填进去,还是空着。
3. 如何把每个人的数据横向的放入excel正确的位置。
4. 如何将多个人的数据放入excel正确的位置。
我个人首先解决的是写一个excel,将固定内容写进去,制作一个模版。
# 创建一个工作簿
f = xlwt.Workbook()
# 创建一个sheet
sheet1 = f.add_sheet('P1D1',cell_overwrite_ok=True)
# 写内容,row行数,column列数(都是从0开始)
sheet1.write(row,column,'P1D1')
'''
合并单元格sheet.write_merge(x,x+m,y,w+n,string,style)
x表示行,y表示列,m表示跨行个数,n表示跨列个数
string表示写入的单元格内容,style表示单元格风格
'''
'''
第一个参数2表示第3行,第二个参数2表示还是第三行,跨行个数相当于0
第三个参数1表示第2列,第四个参数4表示第5列,合并的单元格相当于是第3行的第2列到第5列
'''
sheet1.write_merge(2, 2, 1, 4, 'Touch-01', set_style())
'''
如果一行有很多的固定内容,可以不指定位置,通过遍历依次放入
'''
# 生成第4行,将row13的参数依次写进去
row13 = ['数据', 'DrawStart', 'DrawStop', 'TimeBegin', 'TimeEnd']
for a0 in range(0, len(row13)):
sheet1.write(3, a0, row13[a0], set_style())
'''
这就是一个sheet的写法,如果一个Excel表格有很多sheet,依次add_sheet,写内容
'''
其次,解决的问题是读取json文件,代码很简单。
需要注意的是,如果json文件中内容含有中文,代码中需加入encoding=’utf-8’,不会报错,正确读出中文。
Question_02.json文件打开就说file was loaded in the wrong encoding:’utf-8’,中文显示的地方全是乱码,为了让代码正常运行,需加入errors=’ignore’