2016-10-19 1 views
1

Ich muss Werte in Zellen in mehreren hundert Excel finden. Bis jetzt analysiere ich jede Excel-Datei, indem ich jede Zeile wiederhole, aber es ist zu lang (Excel-Dateien haben mehr als 3000 Zeilen). Aber wenn Ctrl + F in Excel verwendet wird, ist das Ergebnis instataneous.Finden Sie Zelle in Excel mit Python ohne Iterieren

Meine Frage: Wie man einen Wert in einer Excel-Datei, die viele Zeilen hat, schnell (schneller als Iterieren) findet.

Danke für Ihre Hilfe.

+0

Schauen Sie sich http://stackoverflow.com/questions/34054272/openpyxl-optimizing-cells-search-speed an. – Nurjan

Antwort

0

Nach Nurzhan Kommentar, hier ist die Antwort (die Excel-Datei in einer Matrix zu kopieren und dann den Wert in der Matrix mit 3 Bedingungen finden):

matrix = numpy.zeros(shape=(sheet2.max_row+,23),dtype=object) 
j=1 
for row in sheet2: 
    i=1 
    for cell in row:     
     matrix[j][i] = cell.value 
     i=i+1 
    j=j+1 



for i in range(sheet2.max_row-50,1,-1): 
    if Model==matrix[i][9] and matrix[i][12] != None and "A" in matrix[i][1] : # 
      Var1 = matrix[i][1] 
      Var2 = matrix[i][9] 
      Var3 = matrix[i][12] 
      break 

Durch die 3000 Zeilen in Excel Iterieren es war etwa 25 Sekunden und jetzt durch die Bewältigung von Daten in einer Matrix ist das Ergebnis in weniger als einer Sekunde.

1

Der Weg, dies zu tun ist, com Automatisierung zu verwenden.

Installieren Sie pythonnet, um auf die Common Language Runtime (CLR) zuzugreifen. Es gibt vordefinierte Binärdateien unter http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonnet.

https://github.com/pythonnet/pythonnet

Ich habe Excel nicht so kann ich Sie nicht mit einem funktionellen Beispiel bieten, aber Ihr Code wird hier so etwas wie die Beispiele am Ende: https://discourse.mcneel.com/t/close-an-excel-session-with-python/613.

+0

COM-Objekte sind derzeit nicht direkt von pythonnet aus zugänglich. Aber ich habe kürzlich einen einfachen Wrapper für meinen unmittelbaren Anwendungsfall erstellt: https://github.com/pythonnet/pythonnet/issues/260 – denfromufa

Verwandte Themen