Probleme mit win32com und Excel
Verfasst: Freitag 13. Juli 2007, 10:42
Hallo,
ich habe eine Anwendung programmiert, wo aus Python heraus Daten aus einem Excelfile gelesen werden.
Jetzt habe ich aber das Problem, dass das Initialisieren der COM-Schnittstelle nicht immer sauber funktioniert.
Auf dem Ausführungsrechner sind immer einige Excelfiles(5-10) geöffnet. Diese sind zum Teil modifiziert aber nicht abgespeichert.
Öffne ich jetzt meine Anwendung und will das Excelfile öffnen:
kriege ich die Fehlermeldung, das "self.xlApp" keine "Workbooks" hat.
Diese Fehlermeldung kommt aber nicht immer, sondern sporadisch.
Ich denke, dass dies durch die vielen geöffneten Excelanwendungen im Zusammenhang mit der COM-Schnittstelle verursacht wird.
Habt ihr diesbezüglich schon Erfahrungen gesammelt????
Danke
gruss george
ich habe eine Anwendung programmiert, wo aus Python heraus Daten aus einem Excelfile gelesen werden.
Jetzt habe ich aber das Problem, dass das Initialisieren der COM-Schnittstelle nicht immer sauber funktioniert.
Auf dem Ausführungsrechner sind immer einige Excelfiles(5-10) geöffnet. Diese sind zum Teil modifiziert aber nicht abgespeichert.
Öffne ich jetzt meine Anwendung und will das Excelfile öffnen:
Code: Alles auswählen
def __init__(self, filename=None):
self.xlApp = win32com.client.dynamic.Dispatch('Excel.Application')
if filename:
self.filename = filename
#feststellen, ob die Exceldatei bereits geöffnet ist
workBooks = self.xlApp.Workbooks
boolFileIsOpen = False
for doc in self.xlApp.Workbooks:
if (filename.find(doc.Name) != (-1)):
boolFileIsOpen = True
self.xlBook = doc
#wenn Datei noch nicht geöffnet ist, dann öffnen
if (boolFileIsOpen == False):
self.xlBook = self.xlApp.Workbooks.Open(filename)
else:
self.xlBook = self.xlApp.Workbooks.Add()
self.filename = ''
Diese Fehlermeldung kommt aber nicht immer, sondern sporadisch.
Ich denke, dass dies durch die vielen geöffneten Excelanwendungen im Zusammenhang mit der COM-Schnittstelle verursacht wird.
Habt ihr diesbezüglich schon Erfahrungen gesammelt????
Danke
gruss george