Excel Tabelle und ODBC

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
101
User
Beiträge: 13
Registriert: Donnerstag 11. Dezember 2008, 14:44

Sonntag 14. Dezember 2008, 11:22

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?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Sonntag 14. Dezember 2008, 12:36

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
101
User
Beiträge: 13
Registriert: Donnerstag 11. Dezember 2008, 14:44

Sonntag 14. Dezember 2008, 12:52

... 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
101
User
Beiträge: 13
Registriert: Donnerstag 11. Dezember 2008, 14:44

Sonntag 14. Dezember 2008, 14:24

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.
Antworten