Openpyxl,如果键与单元格匹配,则将键值附加到列?

时间:2017-01-26 11:34:13

标签: python openpyxl

我有一个包含以下内容的excel文件:

A1 =公司名称 B1 =移动

我生成了一些字典,其中包含colmumn标头作为键的一些数据,将单元格与键进行比较以检查它是否匹配。在匹配时,我想比较该列的单元格与匹配键的值。如果值不存在append列。

for key in dictionary_test.keys():
    os.chdir("C:\Python34")
    wb = load_workbook("Trying web.xlsx")
    ws = wb.active
    for row in ws.iter_rows():
        for cell in row:
            if key == cell.value:

        ws.append(dictionary_test)
        wb.save("Trying web.xlsx")

我收到以下错误:

  

追踪(最近一次通话):    文件“”,第8行,in   文件“C:\ Python34 \ lib \ site-packages \ openpyxl \ worksheet \ worksheet.py”,第692行,附加      col_idx = column_index_from_string(col_idx)    文件“C:\ Python34 \ lib \ site-packages \ openpyxl \ utils__init __。py”,第112行,在> column_index_from_string中      提高ValueError(“{0}不是有效的列名”.format(str_col))   ValueError:Contact Person不是有效的列名

我该怎么做才能纠正这个问题?

excel文件的结构:

A1 =公司

B1 =手机

C1 =电话

D1 =联系人

E1 =致电我们

F1 =地址

目前他们下面的单元格中没有任何内容。

1 个答案:

答案 0 :(得分:0)

我假设你在dictionary_test尝试这样的事情:

dictionary_test = {
    "Company": "Microsoft",
    "Mobile": "1234567",
    ...
}

图书馆不知道您的Excel工作表中的第一行应该是列名。因此,您尝试在循环中解压缩,但是您将附加行中的完整字典传递给它。尝试使用数组。像这样:

data = [ "Microsoft", "1234567", ... ]
ws.append(data)

如何生成输入数据?它是从你无法触及的地方出发还是只是将它预先排序到数组中来追加它?

相关问题