Frei Excel Zelle finden

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
Korea-2003
User
Beiträge: 25
Registriert: Mittwoch 23. April 2008, 13:47

Dienstag 24. Juni 2008, 12:19

Hi,

wie finde ich raus, welches die nächste freie Zelle in Excel ist?
Das heißt ich habe beispielsweise A1-A5 gefüllt und mein Python Programm soll abfragen, welche die nächste freie ist. Rauskommen
müsste somit A6.
Wie lautet der Befehl dafür?

MfG :)
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Dienstag 24. Juni 2008, 15:57

Code: Alles auswählen

import xlrd
def main(name):
    book = xlrd.open_workbook(name)
    for sheet in book.sheets():
        print sheet.name
        for row in xrange(sheet.nrows):
            row_content = sheet.row_values(row)
            print row_content
            for col_index, cell in enumerate(row_content):
                print cell, col_index
                if cell == "":
                    print "Leere Zelle: %s%i" % (chr(ord("A") + row), col_index + 1)
                    break
            else:
                print "Leere Zelle: %s%i" % (chr(ord("A") + row), col_index + 1)
        
if __name__ == '__main__':
    main("Mappe.xls")
Meine Debug-Prints sind noch drin. Info zu xlrd.
Korea-2003
User
Beiträge: 25
Registriert: Mittwoch 23. April 2008, 13:47

Donnerstag 26. Juni 2008, 15:46

Geht das auch irgendwie ohne zusätzliches xlrd Modul?
Genauso würde ich gerne von oben nach unten den Zeilenindex zählen, natürlich nur bis zur letzten befüllten Zeile.

MfG :)
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Donnerstag 26. Juni 2008, 15:52

Mit Modulen aus der Standardlib kannst du nur csv-Dateien lesen.
Was meinst du mit Zeilenindex zählen?
Die letzte befüllte Zeile wird durch sheet.nrows angegeben, wie in dem Snippet.
Korea-2003
User
Beiträge: 25
Registriert: Mittwoch 23. April 2008, 13:47

Freitag 27. Juni 2008, 10:06

Hi,

ich habe es nun mit Hilfe des xlrd Moduls gemacht. Bekomme aber leider immer eine Fehlermeldung, da im Excel Sheet Umlaute enthalten sind.

Code: Alles auswählen

        workbook = xlrd.open_workbook(self.txtFile.GetValue(), encoding_override="cp1252")
        for worksheet in workbook.sheets():
            if worksheet.name == "NewVersion": 
                for row in xrange(worksheet.nrows):
                    if row > 0:
                        row_content = worksheet.row_values(row) 
                        for index, cell in enumerate(row_content): 
                            print cell, index
So sieht der Code dazu aus. Ich habe zwar eine Codierung drin, aber entweder ist sie falsch oder ich habe noch etwas vergessen?

MfG :)
BlackJack

Freitag 27. Juni 2008, 14:55

Wo kommt denn die Fehlermeldung und wie lautet sie genau? Insbesondere wenn die Kodierung nicht von Dir vorgegeben wird. Ich habe den Verdacht, dass sie dann beim ``print`` kommt!? Das hätte dann nichts mit der Kodierung in der Excel-Datei zu tun, sondern dass Du explizit angeben müsstest wie die Daten bei der Ausgabe per ``print`` kodiert werden sollen.
Antworten