Seite 1 von 1

Python - Exel - Arbeitsblatt hinten anhängen

Verfasst: Freitag 31. Oktober 2008, 10:55
von NewUser007
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()

Verfasst: Freitag 31. Oktober 2008, 11:58
von n4p
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 :) )

Verfasst: Freitag 31. Oktober 2008, 15:27
von NewUser007
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.

Verfasst: Freitag 31. Oktober 2008, 17:22
von HWK
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

Verfasst: Freitag 14. November 2008, 13:12
von NewUser007
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.

Verfasst: Freitag 14. November 2008, 15:14
von Qubit
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))

...

Verfasst: Freitag 14. November 2008, 15:24
von NewUser007
Super das klappt. Hatte das None vergessen.

Vielen Dank.