openpyxl:使用python列表填充下拉验证中

时间:2018-12-06 11:02:35

标签: python openpyxl

我正在使用openpyxl从python处理电子表格。

我试图在一个名为organisation的工作簿标签中创建一个下拉验证。是否可以使用python列表填充下拉选择中的元素?

当我将下拉选项硬编码到DataValidation行中时,如下所示:

dv = DataValidation(type="list", formula1="The", "earth", "revolves", "around", "sun", allow_blank=True)

在电子表格标签中创建下拉菜单,并按预期填充选项。

但是,当我尝试使用python list添加下拉选项,然后像这样传递到DataValidation行时:

    valid = ['"The,earth,revolves,around,sun"']
    dv = DataValidation(type="list", formula1=valid, allow_blank=True)

未创建下拉列表。

有关其他信息,请参见下面的完整脚本

def addValidationDropDowns(path):

    valid = ['"The,earth,revolves,around,sun"']

    wb = openpyxl.load_workbook(path)
    ws = wb['organisation']
    dv = DataValidation(type="list", formula1=valid, allow_blank=True)
    ws.add_data_validation(dv)
    for x in range(0, 3):
        dv.add(ws["A"+str(x+10)])

    wb.save(path)

    return

如果有人可以提供一些指导,将不胜感激

非常感谢

1 个答案:

答案 0 :(得分:1)

我第一次这样做就为此感到挣扎。奇怪的是,如果您认为“类型”参数或DataValidation是“列表”,那我们就使用一个列表吧!但不是!它期待一个字符串。我认为,如果您删除“有效”变量的方括号,您的示例将起作用。

valid = '"The,earth,revolves,around,sun"'