1. 程式人生 > >python讀取json文件轉成excel

python讀取json文件轉成excel

dex with index odi 讀取 while cell with open __main__

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的方法。

python讀取json文件轉成excel