Seite 1 von 2

add_sheet in excel mit xlrd und xlwt

Verfasst: Mittwoch 17. November 2010, 14:58
von cecile
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')

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Mittwoch 17. November 2010, 15:43
von ichisich
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.

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Mittwoch 17. November 2010, 15:54
von Xynon1
Müsste die Datei, nicht danach auch wieder geschlossen werden ?
bzw hier müsste das with statement auch gehen, oder ?

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Mittwoch 17. November 2010, 16:06
von ichisich
Auf Seite 7 steht was dazu.

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Mittwoch 17. November 2010, 16:22
von Xynon1
Danke auch wenn ich es bisher nicht brauche, war auch eher intressehalber. :D

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Mittwoch 17. November 2010, 16:59
von cecile
Danke, gibt es dazu auch noch eine möglichkeit wie ich abfragen kann, ob ein worksheet oder ein workbook schon existiert?

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Mittwoch 17. November 2010, 17:52
von ichisich
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.

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Donnerstag 18. November 2010, 10:14
von cecile
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

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Donnerstag 18. November 2010, 10:21
von Leonidas
Wie ist den die Fehlermeldung, die IronPython bringt?

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Donnerstag 18. November 2010, 10:27
von cecile
Es bringt keine Fehlermeldung, sondern stürzt total ab.
"ipy.exe has stopped working", habe aber sonst eigentlich keine probleme mit ipy.exe

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Donnerstag 18. November 2010, 10:29
von Xynon1
Immer das selbe Spiel,
hast es mal über einen Terminal/Konsole versucht ?

Dort sieht man für gewöhlich etwas detaliertere Ausgaben.

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Donnerstag 18. November 2010, 10:48
von cecile
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"

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Donnerstag 18. November 2010, 17:01
von cecile
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')

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Freitag 19. November 2010, 15:05
von mkesper
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.

Re: add_sheet in excel mit xlrd und xlwt

Verfasst: Montag 22. November 2010, 11:20
von cecile
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...