[Python-de] VBA oder Python (via win32com o.ä.) besser für Excel-File Operationen?

Yu-Fang Helena Wang yh.wang.de at googlemail.com
Fr Jan 4 14:30:12 CET 2013


Hallo Mike, hallo Harald,

vielen Dank für eure schnellen Antworten!! Also nachdem ich abgewogen habe:
die größten Möglichkeiten inn. Python bietet das Modul win32com, muss mich
aber einarbeiten,
danach käme OpenPyxl, kann aber sein, dass ich damit nicht alles realisiert
bekomme, was ich brauche.
Hm. Ich nehm dann doch erstmal VBA, und gucke, wie weit ich damit komme
bzw. wie lange ich es damit aushalte :-|

Viele Grüße,
suesssauer



Am 4. Januar 2013 13:34 schrieb Mike Müller <mmueller at python-academy.de>:

> Am 04.01.13 12:52, schrieb Yu-Fang Helena Wang:
> > Hallo Experten-Forum,
> >
> > 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. Ist jetzt nur bedingt der
> Fall. Ich
> > finde Python netter, aber wichtig ist, dass ich mit dem Tool meiner Wahl
> > _alles_ erledigt bekomme, und nicht nur eine Teilaufgabe. Lt. Google
> gibt es
> > folgende Optionen:
> >
> > 1) Python über Modul win32com (geht das mit Python 3.3?)
>
> win32com ist Bestandteil von pywin32 und für Python 3.3 verfügbar:
> http://pypi.python.org/pypi/pywin32/214
>
> > 2) Python-Module xlrd, xswt von python-excel.org <
> http://python-excel.org>
>
> Die (xlrd, xlwt) gehen nur für Exceldateien im Format 2003 und früher
> (binär).
> Für Exceldateien im Format 2007 (XML, *.xlsx) gibt es OpenPyxl:
> http://pypi.python.org/pypi/openpyxl/1.6.1
> Lässt sich mit pip in Python 3.3 installieren.
>
> > 3) VBA.
>
> >
> > Die Aufgaben gehen so in diese Richtung:
> > - nur Spalten mit bestimmten Namen aus einer vorgegebenen Tabelle
> extrahieren
> > - Spaltennamen (1. /oberster Eintrag) farblich markieren
> >
> > Komplizierter sollte das hier werden:
> >
> > - die Inhalte einer neuen Tabelle mit einer alten Tabelle via Gleichheit
> eines
> > bestimmten Namens abgleichen, also: guck in Spalte A beider Tabellen nach
> > Einträgen, die in beiden Tabellen in Spalte A vorkommen, und übernimm
> jeweils
> > bestimmte Zelleninhalte der Einträge (wirf andre dafür weg). Wenn z.B. in
> > beiden A-Spalten der alten und neuen Tabelle der Wert "123" auftaucht,
> soll der
> > Zelleninhalt "Kommentar" der alten Tabelle behalten werden, aber
> bestimmte
> > andere Spaltenwerte der neuen Tabelle sollen die alten dennoch
> überschreiben.
> >
> > In welcher Sprache macht man das am komfortabelsten, hat da einer von
> euch
> > Erfahrung? Ich frage mich insbesondere, ob die Module xlrd, xlwt nicht
> von
> > win32com subsumiert werden bzw. ob letzteres nicht eh schon
> leistungsfähiger ist?
> >
> > Ich verwende hier auf dem Arbeits-Notebook Windows 7 Enterprise und hab
> mir
> > vorgestern Python3.3. installiert. VBA ist ja in Excel2007 (das ist
> > installiert) ja auch schon inkludiert.
>
> xrd kann nur Lesen und xlwt nur Schreiben. D.h. man muss die Datei immer
> vollständig neu schreiben. OpenPyxl kann auch eine bestehende Datei
> modifizieren. Macht das Ganze wahrscheinlich einfacher.
>
> Generell gilt: Mit win32com lässt das gesamte Objektmodell vom Excel
> nutzen.
> Also alles was mit Tastatur und Maus in Excel-GUI geht lässt sich auch
> programmieren. Allerdings ist das Objektmodell recht groß und es braucht
> doch einigen Lernaufwand. OpenPyxl ist nicht so leistungsfähig dafür aber
> leichter zu erlernen. Ob damit wirklich alles geht was in der
> Aufgabeanstellung
> steht müsste man im Detail erkunden. Es könnte hier oder da was fehlen z.B.
> bei Kommentaren (wenn es in der Aufgabenstellung um Zellkommentare geht).
>
> Viele Grüße
> Mike
> _______________________________________________
> python-de maillist  -  python-de at python.org
> http://mail.python.org/mailman/listinfo/python-de
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://mail.python.org/pipermail/python-de/attachments/20130104/93ade784/attachment-0001.html>


Mehr Informationen über die Mailingliste python-de