Hallo!
> ich müsste in nächster Zeit einiges mit Excel-Files machen. Da würde sich
> VBA anbieten, wenn man MS- und windows-nah ist.
Mehr wird da auf der python-excel mailingliste diskutiert, da gibt es
noch mehr helfende!
> 1) Python über Modul win32com (geht das mit Python 3.3?)
> 2) Python-Module xlrd, xswt von
python-excel.org
> 3) VBA.
Recht gute Summierung. AUßER:
-> die Steuerung von Excel über COM (ist bestimmt noch unter mehreren
Marketing-Bezeichnungen verfügbar) ist aus jeder Sprache möglich, die
COM ansteuern kann. Python ist da halt eine davon.
Zusätzlich gibt es noch für C# / als .net Module Libraries, um .xltx
und soweiter zu schreiben. Die Berichte dazu klangen anstrengend,
weshalb ich die Versuche, das mit pythondotnet zu realisieren wieder
auf "irgendwann" priorisiert habe.
Vor und Nachteile der Methoden:
1.) Ansteuerung über COM. Darüber ist das Gros der
Excel-Funktionalität erreichbar. Das Vorgehen ist: starte
programmgesteuert ein Excel, gebe über eine
Programm-nach-Programm-Schnittstelle Befehle an Excel.
Konsequenz: es muß Excel verfügbar sein. In diversen Dokumentationen
seitens Microsoft sind auch Hinweise zu finden, daß Microsoft Excel
für die Interaktive Verwendung gemacht ist; es für die
programmgesteurte Nutzung keine Garantie oder Support gibt (wieweit es
erlaubt ist, frage drei Anwälte für 6 Meinungen )
Vorteil: Es geht fast alles.
Nachteil: Wenn Excel blockiert, blockiert es. (z.B. "drücken Sie eine
Taste, weil Verknüpfung nach ZZZ nicht greifbar ist")
Die Rückmeldungen wenn etwas nicht möglich ist (zu lange Zeichenkette
in Zelle eingetragen; Falsche Kodierung, Objekt exisitert so nicht)
sind ... nur manchmal verstehbar; oft generische Fehler.
2.) Ansteuerung über XLRD / XLWT. Da wird das Excel Format geparsed,
und ebenso Excel-Format geschrieben. Für Listen ist das perfekt und
richtig schnell. Formatierungen sind begrenzt möglich. Themen wie
Pivots, Autofilter, Ausblenden von Spalten, Automatische Spaltenbreite
sind teils nicht möglich, teils richtig anstrengend. Makro-Aufrufe
gehen gar nicht.
Vorteile: kein Excel notwendig, extrem schnell
Nachteile: Begrenzte Funktionalität. Aktuell nur für .xls verfügbar;
xltx in Ankündigungen
3.) Ansteuerung über VBA. Damit geht noch ein wenig mehr als über COM
- einige Elemente des Objekt Modells sind per COM nicht oder nur so
fehlerhaft greifbar, daß es unsinnig ist.
Vorteil: Teil von Excel. Größter Funktionsumfang
Nachteile: Weniger elegante Sprache (verglichen mit Python). Makros IN
Excel-Arbeitsmappen gespeichert, z.B. Versionsverwaltung nur schwierig
möglich; korrumpierte Excel-Mappen nehmen Makros teils mit in den
Orcus.
Meine Erfahrung:
a) wenn xlrd / xlwt für das Problem reichen, damit arbeiten. Grade zum
Einlesen und Schreiben von Listen, die eigentlich als .csv besser
aufgehoben wären, sind die super gut. Ne fettgedruckte Überschrift
geht damit auch noch.
b) wenn Design und Grafiken gefragt sind, Vorlagen in Excel fertigen,
per COM öffnen und per COM befüllen. Datenerzeugung in Python.
Mit b) habe ich seit 2000 Erfahrungen, mit a) seit rund 5 Jahren.
Mit VBA-Programmierung habe ich mir schon die Finger verbrannt.
Bester GRuß
Harald
--
GHUM GmbH
Harald Armin Massa
Spielberger Straße 49
70435 Stuttgart
0173/9409607
Amtsgericht Stuttgart, HRB 734971