Seite 1 von 1

Fehler bei Xlrd

Verfasst: Montag 20. Juni 2016, 21:47
von piniuus
Hallo,

ich habe ein Programm geschrieben um damit xls Dateien zu lesen und in csv zu schreiben. Das Programm funktioniert soweit auch, nur habe ich ein Problem bei leeren Zellen.

Auszugsweise hier ein Teil des Programms:

Code: Alles auswählen

import xlrd
import csv

file_location = "/home/1/Schreibtisch/python/leer.xls"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)

c = csv.writer(open("/home/1/Schreibtisch/python/50.csv", "w"))
c.writerow([sheet.cell_value(5, 2)] + [sheet.cell_value(15, 2)] + [sheet.cell_value(67, 13)])
Die Zellen sind alle leer.
Das Ergebnis ist:

Traceback (most recent call last):
File "/home/1/PycharmProjects/untitled/3.py", line 9, in <module>
c.writerow([sheet.cell_value(5, 2)] + [sheet.cell_value(15, 2)] + [sheet.cell_value(67, 13)])
File "/usr/local/lib/python3.4/dist-packages/xlrd/sheet.py", line 407, in cell_value
return self._cell_values[rowx][colx]
IndexError: list index out of range

Würde mich sehr über eine Antwort freuen.

Re: Fehler bei Xlrd

Verfasst: Montag 20. Juni 2016, 22:23
von BlackJack
@piniuus: Die sind nicht nur leer, mindestens eine existiert nicht. Was soll man da jetzt sagen? Greif halt nicht auf nicht existierende Zellen zu. Prüfe ob die Zellen existieren oder reagiere entsprechend auf die Ausnahme.

Und drei Listen mit jeweils einem Element zu erstellen um die dann mit ``+`` zusammenzufügen wo bei jeder der beiden Operationen jeweils eine neue Liste erstellt, die Inhalte der beiden in die neue Liste kopiert und dann die beiden alten verworfen werden, ist ein wenig umständlich. Da würde man einfacher *eine* Liste mit drei Elementen hinschreiben.

Re: Fehler bei Xlrd

Verfasst: Dienstag 21. Juni 2016, 14:30
von piniuus
Danke für die Antwort!
Es ist so, das ich versuche ein Programm zu schreiben mit dem ich bestimmte Zellen aus einer xls auslesen kann. Je nach Datei sind nicht alle Zellen beschrieben, existent oder auch mit "div/0" ausgefüllt. Daher das ich viele Datein auslesen will, kann ich die Zellen nicht aus dem Programm nehmen,

Könntest du mir noch ein Tipp geben wie ich 3 Elemente in eine Liste bekomme?

Re: Fehler bei Xlrd

Verfasst: Dienstag 21. Juni 2016, 15:21
von Sirius3
@piniuus: Du mußt halt festlegen, was passieren soll, wenn die Zelle nicht existiert, weil sie außerhalb des definierten Bereichs liegt. Am einfachsten geht das, wenn Du den IndexError einfach abfängst:

Code: Alles auswählen

try:
    wert = sheet.cell_value(5, 2)
except IndexError:
    wert = "sonst was"