add_sheet in excel mit xlrd und xlwt

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
cecile
User
Beiträge: 18
Registriert: Dienstag 24. August 2010, 12:20

Kann ich mit xlwt neue sheets in ein bestehendes excel file einfügen?
Ich habe folgendes versucht:
1. sheet in einem neuen file einfügen (newwb), funktioniert problemlos
2. in ein bestehenden file schreiben (writecell), funktioniert auch
3. in ein bestehendes file ein worksheet hinzufügen (addsheet), funktioniert nicht

Wie löst man Punkt 3 richtig?

Code: Alles auswählen

from xlwt import *

from xlrd import open_workbook
from xlutils.copy import copy

def newwb(sheetname,workbookname):
    
    w = Workbook()
    ws = w.add_sheet(sheetname)
    w.save(workbookname)
       
def writecell(a,b):
    w = open_workbook('numbers.xls')
    wc = copy(w)
    wc.get_sheet(0).write(a,b,'changed!')
    wc.save('numbers.xls')

def addsheet(sheetname):
    w = open_workbook('numbers.xls')
    ws = w.add_sheet(sheetname)
    w.save('numbers.xls')
ichisich
User
Beiträge: 134
Registriert: Freitag 1. Januar 2010, 11:52

Es geht nicht da du die Methode

Code: Alles auswählen

xlrd.open_workbook(wb)
benutzt und die ist aus dem Modul xlRD. Also aus dem Excel-Lesen Modul.

Es geht so wie Du es in der

Code: Alles auswählen

writecell(a,b):
gemacht hast in dem Du:

Code: Alles auswählen

def addsheet(sheetname, workbookname):
    w = open_workbook(workbookname)
    wc = copy(w)
    ws = wc.add_sheet('Sheet')
    ws.write(0,0,"Das Reh spring hoch!")
    wc.save(workbookname)
eine Kopie machst die Du dann verändern kannst.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Müsste die Datei, nicht danach auch wieder geschlossen werden ?
bzw hier müsste das with statement auch gehen, oder ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
ichisich
User
Beiträge: 134
Registriert: Freitag 1. Januar 2010, 11:52

Auf Seite 7 steht was dazu.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Danke auch wenn ich es bisher nicht brauche, war auch eher intressehalber. :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
cecile
User
Beiträge: 18
Registriert: Dienstag 24. August 2010, 12:20

Danke, gibt es dazu auch noch eine möglichkeit wie ich abfragen kann, ob ein worksheet oder ein workbook schon existiert?
ichisich
User
Beiträge: 134
Registriert: Freitag 1. Januar 2010, 11:52

ichisich hat geschrieben:Auf Seite 7 steht was dazu.
Folgende Seiten ...
Wenn ichs noch recht im Kopf hab wird genau das dort gezeigt ...
Einfach mal lesen.
cecile
User
Beiträge: 18
Registriert: Dienstag 24. August 2010, 12:20

ok habe da noch ein anderes Problem, meine oben dargestellten funktionen funktinieren in python super, wenn ich aber versuche sie in Ironpython zu importieren und auszuführen, stürzt mir die Ironpython shell ab, woran mag das liegen?

Gruss und Danke
Cecile
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wie ist den die Fehlermeldung, die IronPython bringt?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
cecile
User
Beiträge: 18
Registriert: Dienstag 24. August 2010, 12:20

Es bringt keine Fehlermeldung, sondern stürzt total ab.
"ipy.exe has stopped working", habe aber sonst eigentlich keine probleme mit ipy.exe
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Immer das selbe Spiel,
hast es mal über einen Terminal/Konsole versucht ?

Dort sieht man für gewöhlich etwas detaliertere Ausgaben.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
cecile
User
Beiträge: 18
Registriert: Dienstag 24. August 2010, 12:20

Habe es versucht mit IronPython Run in eclipse, dort scheint es aber zu funktionieren...,
scheint aber darauf an zu kommen wie ich meinen IronPython Interpreter konfiguriere, wenn ich nur folgende Ordner hinzufüge: IronPython-2.6,IronPython-2.6\DLL,IronPython-2.6\Lib,ironclad-v2.6.0rc1-bin
werden andere commands zwar ausgeführt aber nicht meine excel fkts (es passiert einfach nichts), wenn ich aber noch die ganzen Python Ordner hinzufüge geht es, mir ist jetzt aber unklar ob ich dann das ganze Python oder Ironpython laufen lasse, mit IronPython run...

Sowieso ist aber "IronPython run" viel viel langsamer als "Python run"
cecile
User
Beiträge: 18
Registriert: Dienstag 24. August 2010, 12:20

Ich habe es zeile für zeile versucht um raus zufinden was das Problem ist, es scheint dass
bei folgender Zeile abstürzt, alles andere scheint ok zu sein
w = open_workbook('numbers.xls')
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Hallo,

Du solltest ein Workbook nicht mehrmals öffnen, sondern nur einmal und es an einen Namen binden, den du dann zwischen deinen Funktionen hin und her reichen kannst. w ist übrigens ein doofer Name, ich würde da etwas anderes nehmen.

EDIT: Name statt Variable.
cecile
User
Beiträge: 18
Registriert: Dienstag 24. August 2010, 12:20

herumreichen ok, aber in Ironpython kann ich kein workbook mit open_workbook() öffnen, egal ob es schon offen ist oder nicht, ipy.exe stürzt einfach ab...
Ich möchte aber gerne auch in schon bestehende xls files schreiben können, wenn ich das python programm heute schliesse möchte ich gerne morgen wieder auf das gleiche xls file schreiben können...
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Die Glaskugel ist immer noch zerbrochen... (Ja, ohne Fehlermeldung könnte man nur raten).
Wieso willst du unbedingt IronPython nehmen, wenn es doch mit Python klappt?
Antworten