pandas Python中的Excel数据验证

pvcm50d1  于 2023-08-01  发布在  Python
关注(0)|答案(1)|浏览(204)

我想用python在我的excel工作表中创建一个下拉列表。源代码位于另一个工作表中,但位于同一文件中。目前,我正在使用这个方法进行验证。

def add_data_validation(sheet, dropdown_sheet):
    end_use_validation = DataValidation(type="list", formula1='dropdown!$A$1:$A$3', showDropDown=True)
    status_validation = DataValidation(type="list", formula1='dropdown!$B$1:$B$3', showDropDown=True)
    result_validation = DataValidation(type="list", formula1='dropdown!$C$1:$C$3', showDropDown=True)

    for row in range(2, sheet.max_row + 1):
        end_use_cell = sheet['V' + str(row)]
        status_cell = sheet['W' + str(row)]
        result_cell = sheet['X' + str(row)]

        end_use_validation.add(end_use_cell)
        status_validation.add(status_cell)
        result_validation.add(result_cell)

    sheet.add_data_validation(end_use_validation)
    sheet.add_data_validation(status_validation)
    sheet.add_data_validation(result_validation)

字符串
Excel error
但是,当我运行程序并在我的excel工作表中检查结果时,没有下拉列表。我注意到,我必须选择忽略空白和单元格内下拉菜单,以显示下拉列表。
Data Validation
如何在我的Python代码中做到这一点?先谢谢你。
目前,这个问题只能在我进入我的excel并手动选中这两个框时才能解决。

hfyxw5xn

hfyxw5xn1#

从你的标签上看,你好像在用Pandas。但是我看到DataValidation在openpyxl库中可用。请从导入DataValidation的位置共享。
如果它来自openpyxl,它接受2个参数,可以启用这些复选框。showDropdown您已经启用。allowBlank启用其他复选框。

DataValidation(type=None, formula1=None, formula2=None, showErrorMessage=False, showInputMessage=False, showDropDown=False, allowBlank=False, sqref=(), promptTitle=None, errorStyle=None, error=None, prompt=None, errorTitle=None, imeMode=None, operator=None, allow_blank=False)

字符串
因此,您的代码将变为:

end_use_validation = DataValidation(type="list", formula1='dropdown!$A$1:$A$3', showDropDown=True, allowBlank=True)


参考:https://openpyxl.readthedocs.io/en/latest/api/openpyxl.worksheet.datavalidation.html?highlight=DataValidation#module-openpyxl.worksheet.datavalidation

相关问题