Seite 1 von 1

Excel Tabelle und ODBC

Verfasst: Sonntag 14. Dezember 2008, 11:22
von 101
Hallo Zusammen,

ich bin dabei eine größere Menge Daten per ODBC in eine Excel Tabelle zu schreiben. Ich hatte es vorher mit COM probiert, diese Variante ist aber zu langsam. Zum Schreiben per ODBC habe ich das hier im Forum angegebene Beispiel verwendet.

Code: Alles auswählen

connstr = (
    "DRIVER={MICROSOFT EXCEL DRIVER (*.XLS)};"
    "DSN='';"
    "FIRSTROWHASNAMES=1;"
    "READONLY=FALSE;"
    "DBQ=%s"
) % ExcelFile

conn = odbc.odbc(connstr)
cur = conn.cursor()

for s in range (AnzSpalten):
    for t in range (AnzZeilen):
        krit = "insert into Test_ODBC (%s) values ('TEST')" % str("Spalte_" + str(s)) 
        cur.execute(krit)

conn.commit()
cur.close()
conn.close()

Mit dieser Umsetzung habe ich aber ein Problem:
Wenn die erste Spalte vollgeschrieben ist, wird beim Schreiben in die nächste Spalte nicht wieder oben begonnen, sondern eine Zeile nach dem letzten Eintrag aus der vorherigen Spalte.

Wie kann ich wieder "oben" beginnen die nächste Spalte zu füllen?

Re: Excel Tabelle und ODBC

Verfasst: Sonntag 14. Dezember 2008, 12:36
von gerold
101 hat geschrieben:Wie kann ich wieder "oben" beginnen die nächste Spalte zu füllen?
Hallo 101!

Mit ODBC kannst du nur zeilenweise (alle Spalten auf einmal) schreiben.

Aber egal... Diese Methode ist der ODBC-Methode vorzuziehen: http://www.python-forum.de/post-63850.html#63850
...weil schneller und ohne Umlautprobleme.

mfg
Gerold
:-)

Verfasst: Sonntag 14. Dezember 2008, 12:52
von 101
... nur zeilenweise, das ist natürlich unschön, weil sich bei mir die Anzahl der Spalten dynamisch ändert.

Ich werde mal deine Variante ausprobieren. Mal schauen, ob ich zurecht komme und wie schnell ich die Excel Spalten ausgefüllt bekomme

Verfasst: Sonntag 14. Dezember 2008, 14:24
von 101
Ein Problem habe ich noch:

Code: Alles auswählen

cells = worksheet.Range(worksheet.Cells(2, Spalte),worksheet.Cells(len(iWerte)+1, Spalte))
cells.Value = iWerte
Der entsprechend definierte Bereich wird zwar beschrieben, es wird aber immer nur das erste Element von der Liste iWerte eingetragen.