win32 öffnet Excel-Workbook nicht
Verfasst: Freitag 15. April 2011, 12:52
Hallo,
Ich schreibe ein python plugin in 2.5 für Quantum GIS. Das Plugin soll Werte aus der QGIS Attributtabelle auslesen, in ein Excelblatt einfüttern und andere Werte dort wieder auslesen.
Ich versuche auf Excel zurückzugreifen, was vor einiger Zeit auch funktioniert hat. Zwischenzeitlich hatte ich mich anderen Problemen zugewandt und jetzt habe ich folgendes Problem mit Excel:
Zuerst las die .xls an einem Ort, wo ich wohl keine vollen Befugniss hatte, also keine Änderungen an der Datei vornehmen konnte (beim Beschreiben der Zellen kam immer ein Exception Error -2146827284). Daraufhin habe ich den Ort der .xls geändert und es auf meine vollzugreifbare Platte gelegt und die Pfade zum Aufrufend er Datei entsprechend geändert. Wenn ich jetzt versuche aus dem Skript auf Zellen zuzugreifen, scheint die Datei nicht zu laden.
Keine der beiden QMessageBox Warnungen erscheint (ist 'None' hier etwa nicht der richtige Ausdruck?). Außerdem wird Excel trotz Visible = True nicht sichtbar. Dafür kommt aus einem try/except über den ganzen 2. Absatz:
Wenn ich das entsprechende Laden-Schnipsel in der QGIS Konsole schreiben, friert QGIS ein
und reagiert nicht mehr.
Hatte jemand schon ein ähnliches Problem? Woran könnte es liegen?
Ich habe die Pfadnamen bereits mehrmals auf genau Zeichenfolge und Richtigkeit überprüft, hieran sollte es also nciht liegen.
Ich schreibe ein python plugin in 2.5 für Quantum GIS. Das Plugin soll Werte aus der QGIS Attributtabelle auslesen, in ein Excelblatt einfüttern und andere Werte dort wieder auslesen.
Ich versuche auf Excel zurückzugreifen, was vor einiger Zeit auch funktioniert hat. Zwischenzeitlich hatte ich mich anderen Problemen zugewandt und jetzt habe ich folgendes Problem mit Excel:
Zuerst las die .xls an einem Ort, wo ich wohl keine vollen Befugniss hatte, also keine Änderungen an der Datei vornehmen konnte (beim Beschreiben der Zellen kam immer ein Exception Error -2146827284). Daraufhin habe ich den Ort der .xls geändert und es auf meine vollzugreifbare Platte gelegt und die Pfade zum Aufrufend er Datei entsprechend geändert. Wenn ich jetzt versuche aus dem Skript auf Zellen zuzugreifen, scheint die Datei nicht zu laden.
Code: Alles auswählen
def open_Excel(self) :
self.xl = win32.gencache.EnsureDispatch('Excel.Application')
self.xl.Visible = True
#self.wb = self.xl.Workbooks.Open(self.Vorlage)
self.wb = self.xl.Workbooks.Open('Z:\\GEB_files\\Master.xls')
self.sheet = self.wb.Sheets[0] # default Blatt ist 1. Blatt
if self.sheet is None:
QMessageBox.warning(None, 'geb', 'Laden der Vorlage gescheitert. \nDas Programm kann nicht korrekt weiter ausgeführt werden.')
[...]
def input_to_Excel(self) :
try:
# Boolean-Werte in Excel aus technischeAngaben aus Eingabemaske und Fenster zu diesesHaus
for KEY in self.technischeAngaben.keys():
controller = 0
for key in self.technischeAngaben[KEY].keys():
if KEY != 'Fenster':
if self.technischeAngaben[KEY][key]['Status'] == 'checked':
if self.sheet is None:
QMessageBox.warning(None, 'geb', 'Laden der Vorlage gescheitert. \nDas Programm kann nicht korrekt weiter ausgeführt werden.')
self.sheet.OLEObjects(key).Object.Value = 1
controller = 1
elif KEY == 'Fenster':
if key == 'optF_IWU':
controller = 1
except:
error = traceback.format_exc()
QMessageBox.warning(None, 'geb', error)
Code: Alles auswählen
Traceback (most recent call last):
File "C:/Dokumente und Einstellungen/amelie.lesser/.qgis/python/plugins\GEB_20110414\GemeindeEnergieBeratung_run.py", line 198, in input_to_Excel
if self.sheet is None:
AttributeError: 'GemeindeEnergieBeratungRUN' object has no attribute 'sheet'
und reagiert nicht mehr.
Hatte jemand schon ein ähnliches Problem? Woran könnte es liegen?
Ich habe die Pfadnamen bereits mehrmals auf genau Zeichenfolge und Richtigkeit überprüft, hieran sollte es also nciht liegen.