Guten Morgen,
seit längerem nutze ich das xlsx2csv.py Script zum Konvertieren verschiedener Exports.
Leider haben einige "Datenlieferanten" neuerdings in ihrer xlsx Datei eine leere Zeile. Die Datei ist valide, aber eben mit dem "Bug", dass Zeile 1 leer ist und die Reihenbeschriftung in Zeile 2 zu finden ist.
An sich kein Problem, aber scheinbar sieht Python das anders:
...
self.colNum = cellId[:len(cellId)-len(self.rowNum)]
=> TypeError: object of type 'NoneType' has no len()
Habt ihr einen Tipp, wie sich das umgehen lässt?
Einiges habe ich bereits versucht, jedoch immer nur mit dem Ergebnis, dass zwar der Fehler nicht mehr angezeigt wird, aber die Inhalte der darunterliegenden Reihen nicht vollständig geladen werden :-(
def handleStartElement(self, name, attrs):
##self.colType!="NoneType" fuehrt dazu, dass auch darunterliegende Inhalte fehlen
if self.in_row and name == 'c' and self.colType!="NoneType":
self.colType = attrs.get("t")
self.s_attr = attrs.get("s")
cellId = attrs.get("r")
##dasselbe passiert damit
# try:
# self.colNum = cellId[:len(cellId)-len(self.rowNum)]
# except (TypeError):
# self.colNum = self.colNum
self.colNum = cellId[:len(cellId)-len(self.rowNum)]
#self.formula = None
self.data = ""
self.in_cell = True
elif self.in_cell and name == 'v':
self.in_cell_value = True
elif self.in_sheet and name == 'row' and attrs.has_key('r'):
self.rowNum = attrs['r']
self.in_row = True
self.columns = {}
self.spans = None
if attrs.has_key('spans'):
self.spans = [int(i) for i in attrs['spans'].split(":")]
elif name == 'sheetData':
self.in_sheet = True
Großes Dankeschön