def do_numfmt(self, elem): formatCode = unicode(elem.get('formatCode')) numFmtId = int(elem.get('numFmtId')) is_date = is_date_format_string(self.bk, formatCode) self.fmt_is_date[numFmtId] = is_date fmt_obj = Format(numFmtId, is_date + 2, formatCode) self.bk.format_map[numFmtId] = fmt_obj if self.verbosity >= 3: self.dumpout('numFmtId=%d formatCode=%r is_date=%d', numFmtId, formatCode, is_date)
def do_numfmt(self, elem): formatCode = unicode(elem.get("formatCode")) numFmtId = int(elem.get("numFmtId")) is_date = is_date_format_string(self.bk, formatCode) self.fmt_is_date[numFmtId] = is_date fmt_obj = Format(numFmtId, is_date + 2, formatCode) self.bk.format_map[numFmtId] = fmt_obj if self.verbosity >= 3: self.dumpout("numFmtId=%d formatCode=%r is_date=%d", numFmtId, formatCode, is_date)
def __load(self): sheetDoc = self.workbook.domzip["xl/worksheets/sheet%d.xml" % self.id] sheetData = sheetDoc.find("{http://schemas.openxmlformats.org/spreadsheetml/2006/main}sheetData") # @type sheetData Element rows = {} columns = {} for rowNode in sheetData: rowNum = int(rowNode.get("r")) for columnNode in rowNode: colType = columnNode.get("t") cellId = columnNode.get("r") cellS = columnNode.get("s") colNum = cellId[:len(cellId)-len(str(rowNum))] formula = None data = '' try: if columnNode.find('{http://schemas.openxmlformats.org/spreadsheetml/2006/main}v') is not None: if colType == "s": stringIndex = columnNode[0].text data = self.workbook.sharedStrings[int(stringIndex)] #Built in date-formatted fields elif cellS and int(self.workbook.cellStyles[int(cellS)].get('numFmtId')) in range(14, 22+1): data = xldate_as_tuple( float(columnNode[0].text), datemode=0) elif cellS and (self.workbook.cellStyles[int(cellS)].get('numFmtId') in self.workbook.numFmts) \ and is_date_format_string(self.workbook.numFmts[self.workbook.cellStyles[int(cellS)].get('numFmtId')]): data = xldate_as_tuple( float(columnNode[0].text), datemode=0) elif len(columnNode)>0 and columnNode[0] is not None: data = columnNode.find("{http://schemas.openxmlformats.org/spreadsheetml/2006/main}v").text if columnNode.find("{http://schemas.openxmlformats.org/spreadsheetml/2006/main}f") is not None: formula = columnNode.find("{http://schemas.openxmlformats.org/spreadsheetml/2006/main}f").text except Exception: raise #pass if not rowNum in rows: rows[rowNum] = [] if not colNum in columns: columns[colNum] = [] cell = Cell(rowNum, colNum, data, formula=formula) rows[rowNum].append(cell) columns[colNum].append(cell) self.__cells[cellId] = cell self.__rows = rows self.__cols = columns self.loaded=True
def rowsIter(self): sheetDoc = self.workbook.domzip["xl/worksheets/sheet%d.xml" % self.id] sheetData = sheetDoc.find( "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}sheetData" ) # @type sheetData Element for rowNode in sheetData: rowNum = int(rowNode.get("r")) rowCells = [] for columnNode in rowNode: colType = columnNode.get("t") cellId = columnNode.get("r") cellS = columnNode.get("s") colNum = cellId[:len(cellId) - len(str(rowNum))] formula = None data = '' try: if len( columnNode ) > 0 and columnNode[0] is not None and columnNode.find( '{http://schemas.openxmlformats.org/spreadsheetml/2006/main}v' ) is not None: if colType == "s": stringIndex = columnNode[0].text data = self.workbook.sharedStrings[int( stringIndex)] #Built in date-formatted fields elif cellS and re.match("^[\d\.]+$", columnNode[0].text): if int(self.workbook.cellStyles[int(cellS)].get( 'numFmtId')) in range(14, 22 + 1): data = xldate_as_tuple(float( columnNode[0].text), datemode=0) elif (self.workbook.cellStyles[int(cellS)].get('numFmtId') in self.workbook.numFmts) \ and is_date_format_string(self.workbook.numFmts[self.workbook.cellStyles[int(cellS)].get('numFmtId')]): data = xldate_as_tuple(float( columnNode[0].text), datemode=0) else: data = columnNode.find( "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}v" ).text else: data = columnNode.find( "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}v" ).text elif columnNode.find( "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}is" ) is not None: if colType == "inlineStr": data = columnNode[0][0].text if columnNode.find( "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}f" ) is not None: formula = columnNode.find( "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}f" ).text except Exception: raise #pass cell = Cell(rowNum, colNum, data, formula=formula) rowCells.append(cell) yield rowNum, rowCells