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