使用内置条件格式的OpenPyXl即:重复和唯一值



我正在编写一种python方法,该方法检查excel中的特定列,并在红色(如果有)中突出显示重复值,然后将这些行复制到我将用于检查的单独表格上查看为什么它们具有重复的值。这仅用于资产管理,我想检查以确保没有两个确切的序列号或资产ID号等。

此刻,我只想检查列并突出显示红色的重复值。到目前为止,我已经开始使用此方法,并且它运行它只是没有突出具有重复值的单元格。我在A列中使用了带有这些值的测试表,

(336,565,635,567,474,326,366,756,879,567,567,453,657,657,678,324,987,667,667,567,567,657,567)

def check_duplicate_values(self,wb):
    self.wb=wb
    ws=self.wb.active
    dxf = DifferentialStyle(fill=self.red_fill())
    rule = Rule(type="duplicateValues", dxf=dxf, stopIfTrue=None, formula=['COUNTIF($A$1:$A1,A1)>1'])
    ws.conditional_formatting.add('Sheet1!$A:$A',rule) #Not sure if I need this  
    self.wb.save('test.xlsx')

在Excel中,我可以创建一个有条件的格式规则来实现此目的,但是在OpenPyXl中,我不确定是否正确使用了它们的内置方法。另外,我的公式可能不正确吗?

您指的是谁的内置方法?OpenPyXl是一个文件格式库,因此,您可以在Excel工作表中存储有条件的格式。不幸的是,规定的细节从规范中不太清楚,因此通常需要从现有的反向工程形式,尽管可能值得注意的是,Excel创建的规则几乎总是比实际要求的更详细。

我会将更多问题引向OpenPyXl邮件列表。

只需删除公式就可以了。

duplicate_rule = Rule(type="duplicateValues", dxf=dxf, stopIfTrue=None)

您也可以使用唯一规则:

unique_rule = Rule(type="uniqueValues", dxf=dxf, stopIfTrue=None)

查看此信息以获取更多信息:https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/formatting/rule.html#ruletype

最新更新