解析时为什么我的数据丢失&使用xlwt写入Excel工作表? - Python

时间:2017-09-12 07:56:07

标签: python excel dictionary

我有一个问题是将字典数据解析为excel(" .xls"),其中字典中的所有值都不会出现在我的excel文件中(" testbk1.xls")。我一直试图找出问题的原因并且已经有一段时间了。然后决心寻求进一步的洞察...... **有人可以突出问题所在吗?**

预期的Excel输出

enter image description here

产生的Excel输出

enter image description here

代码:

    import xlwt
book = xlwt.Workbook()
sheet1 = book.add_sheet('Sample1', cell_overwrite_ok=True)
data = {'10.110.10.10': [('ar01', 'MODULE', '', 'Modules', 'Catalyst 6500 Series Supervisor Modules', 'PPL94941MG', '31-1-2018'), ('ar01', 'MODULE', '', 'Modules', 'TM', 'FQW10470NTF', '31-3-2018'), ('ar01', 'MODULE', '', 'Modules', 'TM', 'FNS120010WA', '31-3-2018')], '110.110.1.1': [('ar02', 'MODULE', '', 'Modules', 'Catalyst 6500 Series Supervisor Modules', 'RAL1138ZEC1', '31-1-2018'), ('ar02', 'MODULE', '', 'Modules', 'TM', 'OPA10233U08', '31-3-2018'), ('ar02', 'MODULE', '', 'Modules', 'TM', 'HJG1267U9U4', '31-3-2018')], '10.110.1.97': [('EEE-RT', 'MODULE', '', 'Modules', 'TM', 'WGC4556U5UA', '31-3-2018')], '10.110.1.225': [('SSS-IGW-RT-1', 'MODULE', 'MM4', 'Modules', 'TM', 'HJM151RTY6A', '31-3-2018'), ('SSS-IGW-RT-1', 'MODULE', 'MM4', 'Modules', 'TM', 'TTTUI909E7', '31-3-2018'), ('SSS-IGW-RT-1', 'MODULE', 'MM4', 'Modules', 'TM', 'MMM1WEF7813', '31-3-2018')], '10.110.172.2': [('SSS-IGW-RT-2', 'MODULE', 'MM4', 'Modules', 'TM', 'AGM61CGBUDU', '31-3-2018'), ('SSS-IGW-RT-2', 'MODULE', 'MM4', 'Modules', 'TM', 'RYUYUH3L9E9', '31-3-2018'), ('SSS-IGW-RT-2', 'MODULE', 'MM4', 'Modules', 'TM', 'YUI23RT9EW', '31-3-2018')]}

def write_to_file():
    header = ['IP Address', 'Host Name', 'Equipment Type', 'DC', 'Product Type', 'Product Family', 'Serial Number','Hardware EoS']
    n = 0
    for i in header:
        sheet1.write(0, n, i)
        n += 1
    for col, caption in enumerate(data, 1):
        sheet1.write(col, 0, caption)
        for row, dt in enumerate(data[caption], 1):
            for col_no, q in enumerate(dt):
                if not q:
                    q = 'NA'
                if col_no == 0:
                    sheet1.write(row, col_no, caption)
                    sheet1.write(row, col_no+1, q)
                else:
                    sheet1.write(row, col_no+1, q)
    book.save("testbk1.xls")
    return
write_to_file()

1 个答案:

答案 0 :(得分:0)

谢谢大家。发现行被覆盖,因为行值没有从“for row,dt in enumerate(data [caption],1)”更改。

我引入了“row_cnt”变量来增加行号,而不是使用“for row,dt in enumerate(data [caption],1)”中的“row”索引:“。这解决了它。!

def write_to_file():
    header = ['IP Address', 'Host Name', 'Equipment Type', 'DC', 'Product Type', 'Product Family', 'Serial Number','Hardware EoS']
    n = 0
    for i in header:
        sheet1.write(0, n, i)
        n += 1
    row_cnt = 1
    for col, caption in enumerate(data, 1):
        sheet1.write(col, 0, caption)
        for row, dt in enumerate(data[caption], 1):
            for col_no, q in enumerate(dt):
                if not q:
                    q = 'NA'
                if col_no == 0:
                    sheet1.write(row_cnt, col_no, caption)
                    sheet1.write(row_cnt, col_no+1, q)
                else:
                    sheet1.write(row_cnt, col_no+1, q)
            row_cnt += 1
    book.save("testbk1.xls")
    return