Abspeichern der Datei beinhaltet nicht die Änderungen
Verfasst: Mittwoch 6. Februar 2013, 17:22
Hallo,
habe folgendes Phänomen: Ich greife per "get_sheet" auf eine bereits vorhandene Exceldatei zu:
mit dem datei_sheet arbeite ich dann (schreibe diverses herein mittels datei_sheet.write...).
Schließlich Speichere ich dann ab per.
Nun kommt das Seltsame: Nach dieser Speicherung hatte ich ehemals noch Code, der folgendes beinhaltete:
(ein darin ehemals enthaltener Autofilter wird nun nicht mehr benötigt). Wenn ich dieses Programmstück entferne (das ja lediglich das Programm zu öffnen und schließen scheint), werden die darüber ausgeführten Änderungen nicht gespeichert (!), lasse ich es hingegen stehen, läuft alles wie gewünscht.
Kann mir das jemand erklären?
EDIT - ausführlicher Code:
habe folgendes Phänomen: Ich greife per "get_sheet" auf eine bereits vorhandene Exceldatei zu:
Code: Alles auswählen
datei_sheet = datei.get_sheet(int(sheet_counter_c))Schließlich Speichere ich dann ab per
Code: Alles auswählen
datei.save('Dateiname.xls')Nun kommt das Seltsame: Nach dieser Speicherung hatte ich ehemals noch Code, der folgendes beinhaltete:
Code: Alles auswählen
x1.Workbooks.Open(mk_path)
x1.ActiveWorkbook.Close(SaveChanges=1) # 1 is True, 0 is False
x1.Quit()Kann mir das jemand erklären?
EDIT - ausführlicher Code:
Code: Alles auswählen
def zahl2_counting(zahl2_quell_sheet):
numRow_zahl2 = zahl2_quell_sheet.nrows
numCol_zahl2 = zahl2_quell_sheet.ncols
numRow_mk = datei_sheet_read.nrows
row_counter_zahl = 1
zahl2_sheet = datei.add_sheet(zahl2_sheet_name)
zahl2_sheet.col(4).width=3900
zahl2_sheet.write(0, 0, 'Name', style2)
zahl2_sheet.write(0, 1, 'Name2', style2)
zahl2_sheet.write(0, 2, 'Name3', style2)
zahl2_sheet.write(0, 3, 'Name4', style2)
zahl2_sheet.write(0, 4, 'Name5', style2)
numRow_datei_final = 0
for row in xrange(numRow_datei):
rowList_datei = datei_sheet_read.row_values(row)
for col, cell in enumerate(rowList_datei[:1]):
if cell == str(zahl2_sheet_name[:-7]):
numRow_datei_final +=1
for row in xrange(numRow_zahl2):
if row >= 1:
# Jede Zeile auslesen und in jeweils eine Liste schreiben
rowList_zahl = zahl2_quell_sheet.row_values(row)
for col, cell in enumerate(rowList_zahl[:5]):
# Die Werte in's neue Sheet schreiben
zahl2_sheet.write(row_counter_zahl, col, cell, style1)
row_counter_zahl +=1
row_counter_zahl1 = 1
for row in xrange(numRow_zahl2):
if row >= 1:
rowList_zahl = zahl2_quell_sheet.row_values(row)
for col, cell in enumerate(rowList_zahl[:5]):
zahl2_sheet.write(row_counter_zahl1, 5, xlwt.Formula('COUNTIF(E1:E65536;E{0})'.format(row_counter_zahl1+1)), style0)
row_counter_zahl1 +=1
row_counter_zahlB = 1
while row_counter_zahlB <= numRow_mk_final:
if zahl2_quell_sheet.cell_value(row, 6) not in ('Name5','Name6'):
if str(zahl2_sheet_name)[:-7] == 'Hans':
datei_sheet.write(row_counter_zahlB, 5, xlwt.Formula("VLOOKUP('{}'".format(1) + '!D{}'.format(row_counter_zahlB+1) + ";'{}'".format(zahl2_sheet_name) + '!E2:F65536;2;FALSE)'), style0)
row_counter_zahlB +=1
sheet_counter_c = 1
for root, dirs, files in os.walk(zahl2_pathQuell):
for xlsfile in files:
if xlsfile.endswith('_zahl 2.xlsx'):
zahl2_quell_path = os.path.join(root,xlsfile)
zahl2_quell = xlrd.open_workbook(zahl2_quell_path)
zahl2_quell_sheet = zahl2_quell.sheet_by_index(0)
zahl2_file_name = str(xlsfile)
zahl2_sheet_name = zahl2_file_name[:-5]
datei_sheet = datei.get_sheet(int(sheet_counter_c))
datei_read = xlrd.open_workbook('datei_' + str(tag) + '.' + str(monat) + '.' + str(jahr) + '.xls')
datei_sheet_read = datei_read.sheet_by_index(int(sheet_counter_c))
zahl2_counting(zahl2_quell_sheet)
sheet_counter_c += 1
datei.save('datei_' + str(tag) + '.' + str(monat) + '.' + str(jahr) + '.xls')
x1.Workbooks.Open(datei_path)
x1.ActiveWorkbook.Close(SaveChanges=1) # 1 is True, 0 is False
x1.Quit()