2017-03-08 2 views
0

Ich schreibe eine Python-Methode, die eine bestimmte Spalte in Excel überprüft und doppelte Werte in rot markiert (falls vorhanden), dann diese Zeilen auf ein separates Blatt I kopieren wird verwendet, um zu überprüfen, warum sie doppelte Werte haben. Dies ist nur für Asset Management, wo ich überprüfen möchte, dass es keine zwei genaue Seriennummern oder Asset-ID-Nummern etc.OpenPyXL mit eingebauter bedingter Formatierung, dh: doppelte und eindeutige Werte

In diesem Moment möchte ich nur die Spalte überprüfen und doppelte Werte in rot markieren. Ab sofort habe ich diese Methode gestartet und es wird nur die Zellen, die doppelte Werte haben, nicht hervorgehoben. Ich verwende ein Testblatt mit diesen Werten in Spalte A,

(336,565,635,567,474,326,366,756,879,567,453,657,678,324,987,667,567,657,567) Die Zahl "567" wird ein paar Mal wiederholt.

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') 

In Excel, ich kann nur ein bedingtes Format Regel erstellen, diese in OpenPyXL jedoch zu erreichen, ich bin nicht sicher, ob ich ihr Einbau-bin mit Methoden richtig. Könnte meine Formel auch falsch sein?

Antwort

0

Auf wessen eingebauten Methoden beziehen Sie sich? openpyxl ist eine Dateiformatbibliothek und ermöglicht Ihnen daher, bedingte Formate zu verwalten, wie sie in Excel-Arbeitsblättern gespeichert sind. Leider sind die Details der Regeln nicht sehr klar aus der Spezifikation, so dass im Allgemeinen eine Form des Reverse Engineering von einem existierenden benötigt wird, obwohl es wahrscheinlich erwähnenswert ist, dass von Excel erstellte Regeln fast immer ausführlicher sind als tatsächlich benötigt.

Ich würde weitere Fragen an die openpyx Mailingliste richten.

+0

Ich benutze ihre Bibliothek speziell openpyxl.Rule(), um eine "Duplicate Value" Conditional Format auf eine bestimmte Spalte anwenden, aber ich bin nicht in der Lage, dies zu erreichen. Ich war mir nicht sicher, ob etwas mit meiner Formel nicht in Ordnung ist, oder ich benutze nur openpyx.Rule() falsch. Auf der OpenPyXL-Seite gab es sehr wenige Beispiele, wie Bedingte Formate auf vorhandene Excel-Dateien angewendet werden können. – pjmorin0001

Verwandte Themen