Python - Exel - Arbeitsblatt hinten anhängen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
NewUser007
User
Beiträge: 4
Registriert: Freitag 31. Oktober 2008, 10:46

Hallo,

ich habe folgendes Problem ich müsste in einem extistierenen Exel File,
Arbeitsblätter (Worksheets) hinten anhängen. Leider fügt die Add Methode die Blätter vor den schon exitstierenen Blättern ein.
Wie bekommt man das hin, hab schon verschiedene Varianten probiert, leider hat nichts funktionert was ich so im Internet gefunden habe.

Ich hoffe ihr könnt mir weiterhelfen.
Danke schonmal im Voraus.

Code: Alles auswählen

try:
	excel = win32com.client.Dispatch('Excel.Application')
	wb = excel.Workbooks.Open(fName_out)
	excel.Visible = 1
except:
	errormessage = 'Could\'nt open EXEL file' + str(fName_out)
	excel.Quit()
	exitErrorMessage(errormessage)

Code: Alles auswählen

try:
	#wb.Worksheets.Add(Count=wb.Worksheets.Count, After=wb.Worksheets(1))
	#ws = wb.Worksheets.Add.Move after:=Worksheets(wb.Worksheets.Count)
	ws = wb.Worksheets.Add()
except:
	excel.Quit()
	print 'Could\'nt create new Worksheet'
	sys.exit(1)

Code: Alles auswählen

wb.SaveAs(fName_out)
wb.Close()
excel.Quit()
n4p
User
Beiträge: 55
Registriert: Dienstag 10. Juni 2008, 11:05

Hallo,

wieso hast du

Code: Alles auswählen

    #ws = wb.Worksheets.Add.Move after:=Worksheets(wb.Worksheets.Count
auskommentiert?

Das sollte nach dem einfügen etwas umgestellt der richtige Weg sein (sagen zumindest Google-Ergebnisse :) )
NewUser007
User
Beiträge: 4
Registriert: Freitag 31. Oktober 2008, 10:46

Mein Problem ist nur ich weis leider nicht nach was ich die Formel umstellen muss, wie gesagt hab schon einiges probiert (unter anderem auch die auskommentierten Passagen) leider hat nichts geklappt.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Eigentlich sollte es so funktionieren:

Code: Alles auswählen

ws = wb.Worksheets.Add(After=wb.Worksheets(wb.Worksheets.Count))
Das klappt im Gegensatz zu der entsprechenden Variante mit Before bei mir aber nicht. Vielleicht ist das ein Bug in meiner ziemlich alten Excel-Version? Du kannst es ja mal bei Dir probieren.
MfG
HWK
NewUser007
User
Beiträge: 4
Registriert: Freitag 31. Oktober 2008, 10:46

Leider hat es nicht geklappt ein Blatt hinter einem schon vorhanden einzufügen. Scheint ein Bug in Exel zu sein After geht leider nicht.
Also muss ich das ganze wohl doch per Hand sortieren.
Qubit
User
Beiträge: 128
Registriert: Dienstag 7. Oktober 2008, 09:07

NewUser007 hat geschrieben:Leider hat es nicht geklappt ein Blatt hinter einem schon vorhanden einzufügen. Scheint ein Bug in Exel zu sein After geht leider nicht.
Also muss ich das ganze wohl doch per Hand sortieren.
Naja, ein halber Bug ;-)

Code: Alles auswählen

excel = win32com.client.Dispatch('Excel.Application')
excel.Visible = 1
wb = excel.Workbooks.Add()
ws = wb.Worksheets.Add(None,After=wb.Worksheets(wb.Worksheets.Count))

...
NewUser007
User
Beiträge: 4
Registriert: Freitag 31. Oktober 2008, 10:46

Super das klappt. Hatte das None vergessen.

Vielen Dank.
Antworten