python读取json文件转成exce

发布时间:2019-09-12 07:59:02编辑:auto阅读(1471)

    python处理excel有xlwt,openpyxl等,而xlwt只支持excel2003,也就是最多有256列,而openpyxl则支持excel2007以上,最多65536列。下面是两个的程序。
    xlwt为

    
    import json
    import xlwt
    def readFromJson(file):
        with open(file, 'r', encoding='utf8') as fr:
            jsonData = json.load(fr)
        return jsonData
    
    def writeToExcel(file):
        json = readFromJson(file)
        excel = xlwt.Workbook()
        sheet1 = excel.add_sheet('sheet1', cell_overwrite_ok=True)
        sheet2 = excel.add_sheet('sheet2', cell_overwrite_ok=True)
        length = len(json)
        i = 0
        while i < length:
            eachLine = json[i]
            questions = eachLine['questions']
            answer = eachLine['answer']
            questionSize = len(questions)
            if (questionSize > 256):
                print(i + 1, questionSize)
            j = 0
            while j < questionSize:
                ques = questions[j]
                eachQues = ques['question']
                if j < 256:
                    sheet1.write(i, j, eachQues)
                if j == 0:
                    sheet2.write(i, 0, eachQues)
                j = j + 1
            sheet2.write(i, 1, answer)
            i = i + 1
        excel.save('doc/answer.xls')
    
    if __name__ == '__main__':
        writeToExcel('doc/kb.json')
    

    openpyxl为

    import openpyxl
    import json
    def readFromJson(file):
        with open(file, 'r', encoding='utf8') as fr:
            jsonData = json.load(fr)
        return jsonData
    
    def writeToExcel(file):
        json = readFromJson(file)
        excel = openpyxl.Workbook()
        sheet1 = excel.create_sheet('sheet1', index=0)
        sheet2 = excel.create_sheet('sheet2', index=0)
        length = len(json)
        i = 0
        while i < length:
            eachLine = json[i]
            questions = eachLine['questions']
            answer = eachLine['answer']
            questionSize = len(questions)
            j = 0
            while j < questionSize:
                ques = questions[j]
                eachQues = ques['question']
                sheet1.cell(row=i + 1, column=j + 1, value=eachQues)
                if j == 0:
                    sheet2.cell(row=i + 1, column=1, value=eachQues)
                j = j + 1
            sheet2.cell(row=i + 1, column=2, value=answer)
            i = i + 1
        excel.save('doc/answer.xlsx')
    
    if __name__ == '__main__':
        writeToExcel('doc/kb.json')
    

    其核心在于读取json的方法和写入excel的方法。

关键字