1. 程式人生 > >Python的xlwt庫操作表格-將字典資料進行匯入一個格

Python的xlwt庫操作表格-將字典資料進行匯入一個格

需要存入的資料為:

{
    "所有異常資訊": [{
        "異常資料": [{
            "狀態": "不正常",
            "步驟名稱": "備份資料驗證",
            "備註": "None",
            "時間": "None"
        }, {
            "狀態": "不正常",
            "步驟名稱": "撥打電話測試",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "機房環境監控",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "伺服器組是否報警",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "值班電話轉移",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "1",
            "時間": "2018-10-31"
        }, {
            "狀態": "不正常",
            "步驟名稱": "本幣外幣系統批量",
            "備註": "1",
            "時間": "2018-11-01"
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "1",
            "時間": "2018-11-02"
        }],
        "操作人": "資料2",
        "報表時間": "2018-10-31"
    }, {
        "異常資料": [{
            "狀態": "不正常",
            "步驟名稱": "備份資料驗證",
            "備註": "None",
            "時間": "None"
        }, {
            "狀態": "不正常",
            "步驟名稱": "撥打電話測試",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "機房環境監控",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "伺服器組是否報警",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "值班電話轉移",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "1",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "本幣外幣系統批量",
            "備註": "1",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "1",
            "時間": "2018-11-01 00:59:00"
        }, {
            "狀態": "不正常",
            "步驟名稱": "票據系統換日前",
            "備註": "1",
            "時間": ""
        }],
        "操作人": "哈哈哈",
        "報表時間": "2018-11-01"
    }, {
        "異常資料": [{
            "狀態": "不正常",
            "步驟名稱": "備份資料驗證",
            "備註": "None",
            "時間": "None"
        }, {
            "狀態": "不正常",
            "步驟名稱": "撥打電話測試",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "機房環境監控",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "伺服器組是否報警",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "值班電話轉移",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "本幣外幣系統批量",
            "備註": "abc",
            "時間": "2018-11-02 01:59:00"
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "abc",
            "時間": "2018-11-02 23:00:00"
        }, {
            "狀態": "不正常",
            "步驟名稱": "票據系統換日前",
            "備註": "abc",
            "時間": "2018-11-02 23:00:00"
        }],
        "操作人": "備註1",
        "報表時間": "2018-11-02"
    }, {
        "異常資料": [{
            "狀態": "不正常",
            "步驟名稱": "備份資料驗證",
            "備註": "None",
            "時間": "None"
        }, {
            "狀態": "不正常",
            "步驟名稱": "撥打電話測試",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "機房環境監控",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "伺服器組是否報警",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "值班電話轉移",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "本幣外幣系統批量",
            "備註": "789",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "789",
            "時間": "2018-11-02 23:58:00"
        }, {
            "狀態": "不正常",
            "步驟名稱": "票據系統換日前",
            "備註": "789",
            "時間": ""
        }],
        "操作人": "11-03",
        "報表時間": "2018-11-03"
    }, {
        "異常資料": [{
            "狀態": "不正常",
            "步驟名稱": "撥打電話測試",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "機房環境監控",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "伺服器組是否報警",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "值班電話轉移",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "本幣外幣系統批量",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "票據系統換日前",
            "備註": "None",
            "時間": ""
        }],
        "操作人": "備註",
        "報表時間": "2018-11-05"
    }, {
        "異常資料": [{
            "狀態": "不正常",
            "步驟名稱": "備份資料驗證",
            "備註": "None",
            "時間": "None"
        }, {
            "狀態": "不正常",
            "步驟名稱": "撥打電話測試",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "機房環境監控",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "伺服器組是否報警",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "值班電話轉移",
            "備註": "None",
            "時間": ""
        }, {
            "狀態": "不正常",
            "步驟名稱": "理財資管批量",
            "備註": "4",
            "時間": "2018-11-20 15:30:04"
        }, {
            "狀態": "不正常",
            "步驟名稱": "本幣外幣系統批量",
            "備註": "2",
            "時間": "2018-11-20 15:30:01"
        }, {
            "狀態": "不正常",
            "步驟名稱": "排程前檢查",
            "備註": "1",
            "時間": "2018-11-20 15:29:59"
        }, {
            "狀態": "不正常",
            "步驟名稱": "票據系統換日前",
            "備註": "3",
            "時間": "2018-11-20 15:30:03"
        }, {
            "狀態": "不正常",
            "步驟名稱": "信貸系統換日前",
            "備註": "5",
            "時間": "2018-11-20 15:30:07"
        }],
        "操作人": "111111111111111",
        "報表時間": "2018-11-20"
    }, }]
}

程式碼操作如下:

 

wb = xlwt.Workbook(encoding='utf-8')  # 開始建立excel
# style = xlwt.XFStyle()  # 初始化樣式
# style.alignment.wrap = 1  # 自動換行

LST_test = wb.add_sheet('test', cell_overwrite_ok=True)  # excel中的表名
wid1 = LST_test.col(0)#設定第一個格的寬度
wid1.width = 80 * 80
wid2 = LST_test.col(1)#設定第二個格的寬度
wid2.width = 80 * 80
LST_test.write(0, 0, '操作人')  # 列名
LST_test.write(0, 1, '報表時間')
LST_test.write(0, 2, '異常資訊(按照狀態,名字,備註,時間格式顯示)')
row = 1
for i in abnormal_data:
    for key, value in i.items():
        if key == "操作人":
            LST_test.write(row, 0, value)
        elif key == "報表時間":
            LST_test.write(row, 1, value)
        elif key == "異常資料":
            w = 2 # 根據異常的條數進行不斷的往後加資料
            for j in value: # 對列表中字典的資料進行存入
                str1 = ''
                l1 = list(j.keys())[0] + ":" + list(j.values())[0] 
                l2 = list(j.keys())[1] + ":" + list(j.values())[1]
                l3 = list(j.keys())[2] + ":" + list(j.values())[2]
                l4 = list(j.keys())[3] + ":" + list(j.values())[3]
                str1 += l1 + "," + l2 + "," + l3 + "," + l4
                wid3 = LST_test.col(w)
                wid3.width = 80*256
                LST_test.write(row, w, str1)
                w += 1
    row += 1
wb.save('test.xls')

執行結束後結果如下圖: