2009-04-22 12 views
1

Python kommuniziert mit EXCEL ... ich muss einen Weg finden, so dass ich eine Zeile nach bestimmten Spalten suchen kann. Nun, ich scanne ganze Zeilen nacheinander ... Es wäre nützlich, wenn es einige Funktionen wie FINDEN/SUCHEN/ERSETZEN .... Ich sehe diese Funktionen nicht in pyExcelerator oder xlrd Module .. Ich möchte nicht win32com verwenden Module! Es macht mein Tool Windows basiert!pyExcelerator oder xlrd - Wie FINDEN/SUCHEN Sie eine Zeile für die angegebenen wenigen Spaltendaten?

FINDEN/SUCHEN Excel-Zeilen durch Python .... Irgendeine Idee, irgendjemand?

Antwort

2

„Nun, ich bin Scannen ganze Zeilen eins nach dem anderen“

Was ist daran falsch? "Suche" - in einem Tabellenkalkulationskontext - ist wirklich kompliziert. Werte suchen? Suchformeln? Suchen Sie nach Zeilen und dann nach Spalten? Nur nach bestimmten Spalten suchen? Nur bestimmte Zeilen durchsuchen?

Eine Tabelle ist kein einfacher Text - einfache Textverarbeitung Design-Muster gelten nicht.

Tabellenkalkulation ist schwer und Sie tun es richtig. Es gibt nichts Besseres, weil es schwer ist.

2

Sie können nicht. Diese Tools bieten keine Suchfunktionen. Sie müssen die Daten in einer Schleife durchlaufen und selbst suchen. Es tut uns leid.

0

Mit pyExcelerator können Sie eine einfache Optimierung durchführen, indem Sie zuerst die maximalen Zeilen- und Spaltenindizes finden (und diese speichern), so dass Sie über (row, i) for i in range(maxcol+1) iterieren, anstatt über alle Wörterbuchschlüssel zu iterieren. Das ist möglicherweise das Beste, das Sie erhalten, es sei denn, Sie möchten einen Wörterbuch-Mapping-Wert für eine Reihe von Schlüsseln erstellen.

Übrigens, wenn Sie pyExcelerator verwenden, um Tabellen zu schreiben, beachten Sie, dass es einige Fehler hat. Ich habe eines mit dem Schreiben von ganzen Zahlen zwischen 2 30 und 2 32 (oder in der Nähe) gefunden. Der ursprüngliche Autor ist scheinbar in diesen Tagen schwer zu kontaktieren, also ist xlwt ein Fork, der die (bekannten) Bugs behebt. Zum Schreiben von Tabellen ist es ein Ersatz für pyExcelerator; Sie könnten import xlwt as pyExcelerator tun und nichts anderes ändern. Es liest jedoch keine Tabellen.

+0

Interessante zusätzliche Informationen. Vielen Dank. – nosklo

5

@John Fouhy: [Ich bin der Maintainer von xlwt und Autor von xlrd]

Die Tabelle Leseteil von pyexcelerator wurde so stark veraltet, dass sie vollständig aus xlwt verschwunden. So lesen Sie erstellt alle XLS-Dateien von Excel 2.0 bis 11.0 (Excel 2003) oder kompatible Software, mit Python 2.1 + verwenden xlrd

Das "einfache optimi [sz] ation" nicht mit xlrd benötigt:

import xlrd 
book = xlrd.open_workbook("foo.xls") 
sheet = book.sheet_by_number(0) # alternatively: sheet_by_name("Budget") 
for row_index in xrange(sheet.nrows): 
    for col_index in xrange(sheet.ncols): 
+0

Mit etwas Hand, die von John Machin hält, benutzte ich xlrd, um eine Anwendung letztes Jahr zu schaffen (danke wieder John!). Er kennt seine Sachen hier. – PTBNL