Problem mit Excel und pywin32
Verfasst: Freitag 13. Juli 2007, 14:33
Hi!
Ich habe mehrere zip-Dateien, die ich über ein Python-Skript entpacke. Die enthaltenen .htm-Dateien werden in einem Ordner gespeichert, der vom Benutzer eingegeben wird. Dann öffne ich diese Dateien mit pywin32 in Excel und speichere unter dem gleichen Namen als .xls in demselben Ordner. Bei mir funktioniert dies jedoch nur, wenn ich die .xls-Dateien anders benenne als die .htm-Dateien und auf einem anderen PC, auf dem ich das Skript ebenfalls ausführen muss, funktioniert die Anweisung zum Speichern als .xls-Datei garnicht. Woran kann das liegen? Wie kann ich den Fehler beheben?
Mein Code:
Der Fehlertext:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "Meinpfad\unzipper3.py", line 33, in savedata
self.unzip()
File "Meinpfad\unzipper3.py", line 51, in unzip
excel_workbook.SaveAs(pfad + '\\FDAT' + str(i) + '.xls')
File "<COMObject Open>", line 7, in SaveAs
com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, 'Microsoft Office Excel', 'Auf die Datei konnte nicht zugegriffen werden. Versuchen Sie die folgenden L\xf6sungsvorschl\xe4ge:\n\n\x95 \xdcberpr\xfcfen Sie, ob der angegebene Ordner existiert.\n\x95 Stellen Sie sicher, dass der Ordner, in dem sich die Datei befindet, nicht schreibgesch\xfctzt ist.\n\x95 Vergewissern Sie sich, dass der Dateiname keines der folgenden Zeichen enth\xe4lt: < > ? [ ] : | oder *\n\x95 Der Dateiname darf nicht l\xe4nger sein als 218 Zeichen.', 'C:\\Programme\\Microsoft Office\\OFFICE11\\1031\\xlmain11.chm', 0, -2146827284), None)
Vielen Dank im Vorraus!
MfG
Henne
Ich habe mehrere zip-Dateien, die ich über ein Python-Skript entpacke. Die enthaltenen .htm-Dateien werden in einem Ordner gespeichert, der vom Benutzer eingegeben wird. Dann öffne ich diese Dateien mit pywin32 in Excel und speichere unter dem gleichen Namen als .xls in demselben Ordner. Bei mir funktioniert dies jedoch nur, wenn ich die .xls-Dateien anders benenne als die .htm-Dateien und auf einem anderen PC, auf dem ich das Skript ebenfalls ausführen muss, funktioniert die Anweisung zum Speichern als .xls-Datei garnicht. Woran kann das liegen? Wie kann ich den Fehler beheben?
Mein Code:
Code: Alles auswählen
import zipfile as zip
import os
from Tkinter import *
import win32com.client
class Askpath:
def __init__(self):
self.window=Tk()
self.window.geometry('250x250')
self.window.title('Unzipper 3.1')
self.window.config(bg='black')
self.label1=Label(self.window, bg='black', fg='yellow', font=('Arial', 12), text='Pfad zu Zip-Daten:')
self.entry1=Entry(self.window, font=('Arial', 12))
self.label2=Label(self.window, bg='black', fg='yellow', font=('Arial', 12), text='Erste zu entpackende Datei:')
self.entry2=Entry(self.window, font=('Arial', 12))
self.label3=Label(self.window, bg='black', fg='yellow', font=('Arial', 12), text='Letzte zu entpackende Datei:')
self.entry3=Entry(self.window, font=('Arial', 12))
self.button=Button(font=('Arial', 12), text='OK', command=self.savedata, width=10, bg='black', fg='yellow')
self.label1.pack(pady=5,padx=5)
self.entry1.pack(pady=5,padx=5)
self.label2.pack(pady=5,padx=5)
self.entry2.pack(pady=5,padx=5)
self.label3.pack(pady=5,padx=5)
self.entry3.pack(pady=5,padx=5)
self.button.pack(pady=5,padx=5)
self.window.mainloop()
def savedata(self):
global pfad,begin,end
pfad=self.entry1.get()
begin=int(self.entry2.get())
end=int(self.entry3.get())+1
self.unzip()
def unzip(self):
global pfad,begin,end
for i in range(begin,end):
name='FDAT' + str(i)
if not pfad.endswith('\\'):
pfad = pfad + '\\'
datei=pfad+name+'.zip'
f=zip.ZipFile(datei)
for l in f.namelist():
path=os.path.join(pfad,'FDAT'+str(i) + '.htm')
new=open(path,'wb')
new.write(f.read(l))
new.close()
filename = os.path.abspath(pfad + '\\FDAT' + str(i) + '.htm')
excel_app = win32com.client.dynamic.Dispatch('Excel.Application')
excel_workbook = excel_app.Workbooks.Open(filename)
excel_workbook.SaveAs(pfad + '\\FDAT' + str(i) + '.xls')
excel_workbook.Close()
del excel_workbook
excel_app.Quit()
del excel_app
f.close()
os.remove(pfad + '\\FDAT' + str(i) + '.htm')
os.remove(pfad + '\\FDAT' + str(i) + '.zip')
Askpath()
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "Meinpfad\unzipper3.py", line 33, in savedata
self.unzip()
File "Meinpfad\unzipper3.py", line 51, in unzip
excel_workbook.SaveAs(pfad + '\\FDAT' + str(i) + '.xls')
File "<COMObject Open>", line 7, in SaveAs
com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, 'Microsoft Office Excel', 'Auf die Datei konnte nicht zugegriffen werden. Versuchen Sie die folgenden L\xf6sungsvorschl\xe4ge:\n\n\x95 \xdcberpr\xfcfen Sie, ob der angegebene Ordner existiert.\n\x95 Stellen Sie sicher, dass der Ordner, in dem sich die Datei befindet, nicht schreibgesch\xfctzt ist.\n\x95 Vergewissern Sie sich, dass der Dateiname keines der folgenden Zeichen enth\xe4lt: < > ? [ ] : | oder *\n\x95 Der Dateiname darf nicht l\xe4nger sein als 218 Zeichen.', 'C:\\Programme\\Microsoft Office\\OFFICE11\\1031\\xlmain11.chm', 0, -2146827284), None)
Vielen Dank im Vorraus!
MfG
Henne