JSON格式成绩信息写入excel


实现如下,其中,造数据函数就是为了造JSON格式文件写的

import xlwt
import json

data_score={
    "1": ["小花", 99, 100, 98.5],
    "2": ["小王", 90, 30.5, 95],
    "3": ["小明", 67.5, 49.6, 88]
}
#造数据,把数据源作为JSON格式存入文件
def create_data(name,data_text):
    file=open_file(name,'w')
    json.dump(data_text, file, ensure_ascii=False, indent=4) #自循环JSON格式写入文件
    close_file(file)


#打开文件
def open_file(filename,mode='r'):
    result=open(filename,mode,encoding='utf-8')
    return  result #返回文件对象

#关闭文件
def close_file(file):
    file.close()

#把表头写入Excel文件
def write_table_head(sheet):
    sheet.write(0,0,"学号") #第一个参数是行,第二个参数是列,第三个参数是该单元格的内容
    sheet.write(0,1,"姓名")
    sheet.write(0,2,"数学")
    sheet.write(0,3,"语文")
    sheet.write(0,4,"英语")
    sheet.write(0,5,"总分")
    sheet.write(0,6,"平均分")

#写表内容
def write_table(sheet,data_list):
    row=1 #从第1行开始写
    for key,value in data_list.items(): #遍历多重字典的第一层
        col = 0
        sheet.write(row,col,key)
        col+=1 #列加
        for value2 in value: #遍历字典第二层的LIST
            sheet.write(row,col,value2)
            col+=1 #列加
        count=sum(value[1:]) #切片方式取3门成绩进行求和
        sheet.write(row,col,count)#写入总分
        sheet.write(row,col+1,'%.2f' %(count/3)) #写入平均值
        row+=1 #行加

#读取文件的JSON格式转换为dic格式
def json_dic(name):
    context = open_file(name)
    data_list = json.load(context)
    close_file(context)
    return data_list

name='c.txt'
create_data(name,data_score) #造数据
book=xlwt.Workbook() #实例化一个对象
sheet = book.add_sheet("成绩") #为EXCLE加sheet且命名
write_table_head(sheet) #写表头
write_table(sheet,json_dic(name)) #写表内容
book.save("score2.xls") #保存文件

 

 


 

 
posted @ 2019-07-12 18:24  小戳同学  阅读(721)  评论(0编辑  收藏  举报