Python的xlwt庫操作表格-將字典資料進行匯入一個格
阿新 • • 發佈:2018-12-18
需要存入的資料為:
{
"所有異常資訊": [{
"異常資料": [{
"狀態": "不正常",
"步驟名稱": "備份資料驗證",
"備註": "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')
執行結束後結果如下圖: