Kopieren von gefilterten Sheets per xlutils.copy

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
Remington Steele
User
Beiträge: 51
Registriert: Donnerstag 22. November 2012, 21:50

Hallo,

ich habe eine Excel-Datei mit einem Sheet, das bereits nach einem bestimmten Kriterium in einer Spalte (Wert 1) gefiltert ist. Dadurch verringert sich entsprechend die Zeilenanzahl. Nun kopiere ich per xlutils.copy dieses gefilterte Sheet. Ziel: Nur noch die übriggebliebenen Zeilen sollen in der fertigen Exceldatei übrigbleiben. Das hat auch ganz wunderbar geklappt, das Filterzeichen in der Spalte oben ist verschwunden. Als ich jedoch testweise die entsprechenden übriggebliebenen Zeilen in der neuen Datei kopiert habe (z.B. 5 Zeilen), staunte ich nicht schlecht, als ich beim Einfügen alle ursprünglichen Zeilen (!) (z.B. 100) eingefügt bekam, d.h. alle Zeilen sind also (teilweise) versteckt noch in der neuen Datei zu finden.

Daher meine Frage: Wie kann ich erreichen, dass er mir wirklich nur die nach Filterung in der ersten Datei sichtbaren Zeilen in das neue Sheet kopiert? Bisheriger Code (knapp umrissen):

Code: Alles auswählen

inBook = xlrd.open_workbook('Eingabedatei.xls', formatting_info=True)

# Kopieren der Eingabedatei
    for sheet in inBook.sheets():
    datei_final = xlutils.copy.copy(inBook)
    datei_final.save('Ausgabedatei.xls')
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo Remington Steele,

und wo ist in Deinem Code der Filter?
Remington Steele
User
Beiträge: 51
Registriert: Donnerstag 22. November 2012, 21:50

Hi Sirius,

den habe ich jetzt nicht extra aufgeführt, um es nicht unnötig zu verkomplizieren. Denn die Datei liegt ja schon so vor... ich habe in einem der vorgehenden Schritte per autofilter zu der relevanten Spalte einen Filter hinzugefuegt. Diesen setze ich dann per Hand auf 1 und will nach Abspeichern wie oben beschrieben fortfahren. Kannst Du mir weiterhelfen?
BlackJack

@Remington Steele: Der Filter entfernt ja nicht wirklich etwas sondern beeinflusst nur was Dir in der Tabellenkalkulation von den weiterhin bestehenden Inhalten angezeigt wird. Das passiert „live” das heisst ausser dem Filterkriterium ist nichts in der Datei gespeichert, insbesondere nicht welche Tabelleninhalte davon betroffen sind.
Remington Steele
User
Beiträge: 51
Registriert: Donnerstag 22. November 2012, 21:50

Ja, schon. Aber beim Kopieren des Sheets per xlutils sieht es im neuen Sheet wirklich so aus, als wären nur noch die wenigen Zeilen (z.B. 5) vorhanden. Ein Filterzeichen ist oben nicht mehr zu sehen (!). Kopiere ich dann diese 5 Zeilen und füge sie anderswo ein, werden 50 Zeilen eingefügt!

Dass das nun so ist habe ich ja festgestellt, die Frage ist wie gesagt, wie ich nun wirklich "nur" die 5 Zeilen in ein Sheet bekomme?
Remington Steele
User
Beiträge: 51
Registriert: Donnerstag 22. November 2012, 21:50

Kann mir denn hier niemand weiterhelfen? :(
Antworten