List of usage examples for org.apache.poi.xssf.usermodel XSSFRichTextString toString
public String toString()
From source file:com.adanac.excel.reader.sax.ExcelXSSFSheetXMLHandler.java
License:Apache License
@Override public void endElement(String uri, String localName, String name) throws SAXException { String thisStr = null;/*ww w.ja va 2 s. c o m*/ // v => contents of a cell if (isTextTag(name)) { vIsOpen = false; // Process the value contents as required, now we have it all switch (nextDataType) { case BOOLEAN: char first = value.charAt(0); thisStr = first == '0' ? "FALSE" : "TRUE"; break; case ERROR: thisStr = "ERROR:" + value.toString(); break; case FORMULA: if (formulasNotResults) { thisStr = formula.toString(); } else { String fv = value.toString(); if (this.formatString != null) { try { // Try to use the value as a formattable number double d = Double.parseDouble(fv); thisStr = formatter.formatRawCellContents(d, this.formatIndex, this.formatString); } catch (NumberFormatException e) { // Formula is a String result not a Numeric one thisStr = fv; } } else { // No formating applied, just do raw value in all cases thisStr = fv; } } break; case INLINE_STRING: // TODO: Can these ever have formatting on them? XSSFRichTextString rtsi = new XSSFRichTextString(value.toString()); thisStr = rtsi.toString(); break; case SST_STRING: String sstIndex = value.toString(); try { int idx = Integer.parseInt(sstIndex); XSSFRichTextString rtss = new XSSFRichTextString(sharedStringsTable.getEntryAt(idx)); thisStr = rtss.toString(); } catch (NumberFormatException ex) { logger.log(POILogger.ERROR, "Failed to parse SST index '" + sstIndex, ex); } break; case NUMBER: String n = value.toString(); if (this.formatString != null && n.length() > 0) thisStr = formatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); else thisStr = n; break; default: thisStr = "(TODO: Unexpected type: " + nextDataType + ")"; break; } // Do we have a comment for this cell? //checkForEmptyCellComments(EmptyCellCommentsCheckType.CELL); XSSFComment comment = commentsTable != null ? commentsTable.findCellComment(cellRef) : null; // Output ?? output.cell(rowNum, cellRef, thisStr, comment); } else if ("f".equals(name)) { fIsOpen = false; } else if ("is".equals(name)) { isIsOpen = false; } else if ("row".equals(name)) { // Handle any "missing" cells which had comments attached checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_ROW); // Finish up the row output.endRow(rowNum); // some sheets do not have rowNum set in the XML, Excel can read // them so we should try to read them as well nextRowNum = rowNum + 1; } else if ("sheetData".equals(name)) { // Handle any "missing" cells which had comments attached checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_SHEET_DATA); } else if ("oddHeader".equals(name) || "evenHeader".equals(name) || "firstHeader".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), true, name); } else if ("oddFooter".equals(name) || "evenFooter".equals(name) || "firstFooter".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), false, name); } }
From source file:com.myjeeva.poi.CustomXSSFSheetXMLHandler.java
License:Apache License
/** * Mtodo alterado de forma a produzir, alm dos valores formatados para apresentao ao usurio final, os valores * originais sem qualquer tipo de formatao e nos tipos STRING ou NUMERICOS * Obs: Nmeros podem ser, na verdade, datas, ficando a cargo do cliente da classe definir como considera-lo. *//*from w w w . ja va 2 s . c om*/ public void endElement(String uri, String localName, String name) throws SAXException { String thisStr = null; // v => contents of a cell if (isTextTag(name)) { vIsOpen = false; // Process the value contents as required, now we have it all switch (nextDataType) { case BOOLEAN: char first = value.charAt(0); thisStr = first == '0' ? "FALSE" : "TRUE"; break; case ERROR: thisStr = "ERROR:" + value.toString(); break; case FORMULA: if (formulasNotResults) { thisStr = formula.toString(); } else { String fv = value.toString(); if (this.formatString != null) { try { // Try to use the value as a formattable number double d = Double.parseDouble(fv); thisStr = formatter.formatRawCellContents(d, this.formatIndex, this.formatString); } catch (NumberFormatException e) { // Formula is a String result not a Numeric one thisStr = fv; } } else { // No formating applied, just do raw value in all cases thisStr = fv; } } break; case INLINE_STRING: // TODO: Can these ever have formatting on them? XSSFRichTextString rtsi = new XSSFRichTextString(value.toString()); thisStr = rtsi.toString(); break; case SST_STRING: String sstIndex = value.toString(); try { int idx = Integer.parseInt(sstIndex); XSSFRichTextString rtss = new XSSFRichTextString(sharedStringsTable.getEntryAt(idx)); thisStr = rtss.toString(); } catch (NumberFormatException ex) { System.err.println("Failed to parse SST index '" + sstIndex + "': " + ex.toString()); } break; case NUMBER: String n = value.toString(); if (this.formatString != null) thisStr = formatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); else thisStr = n; break; default: thisStr = "(TODO: Unexpected type: " + nextDataType + ")"; break; } // Modificada para armazenar tambm as informaes: valor original e tipo do contedo, e formato de apresentacao do excel output.cell(cellRef, thisStr, value.toString(), this.formatString, nextDataType); } else if ("f".equals(name)) { fIsOpen = false; } else if ("is".equals(name)) { isIsOpen = false; } else if ("row".equals(name)) { output.endRow(); } else if ("oddHeader".equals(name) || "evenHeader".equals(name) || "firstHeader".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), true, name); } else if ("oddFooter".equals(name) || "evenFooter".equals(name) || "firstFooter".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), false, name); } }
From source file:com.teradata.demo.utils.excel.XSSFSheetXMLHandler.java
License:Apache License
public void endElement(String uri, String localName, String name) throws SAXException { String thisStr = null;/*w ww . j a v a2 s . c o m*/ // v => contents of a cell if (isTextTag(name)) { vIsOpen = false; // Process the value contents as required, now we have it all switch (nextDataType) { case BOOLEAN: char first = value.charAt(0); thisStr = first == '0' ? "FALSE" : "TRUE"; break; case ERROR: thisStr = "ERROR:" + value.toString(); break; case FORMULA: if (formulasNotResults) { thisStr = formula.toString(); } else { String fv = value.toString(); if (this.formatString != null) { try { // Try to use the value as a formattable number double d = Double.parseDouble(fv); thisStr = formatter.formatRawCellContents(d, this.formatIndex, this.formatString); } catch (NumberFormatException e) { // Formula is a String result not a Numeric one thisStr = fv; } } else { // No formating applied, just do raw value in all cases thisStr = fv; } } break; case INLINE_STRING: // TODO: Can these ever have formatting on them? XSSFRichTextString rtsi = new XSSFRichTextString(value.toString()); thisStr = rtsi.toString(); break; case SST_STRING: String sstIndex = value.toString(); try { int idx = Integer.parseInt(sstIndex); XSSFRichTextString rtss = new XSSFRichTextString(sharedStringsTable.getEntryAt(idx)); thisStr = rtss.toString(); } catch (NumberFormatException ex) { System.err.println("Failed to parse SST index '" + sstIndex + "': " + ex.toString()); } break; case NUMBER: String n = value.toString(); if (this.formatString != null) { if (this.formatString.equals("m/d/yy")) this.formatString = "yyyy-MM-dd"; thisStr = formatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); } else thisStr = n; break; default: thisStr = "(TODO: Unexpected type: " + nextDataType + ")"; break; } // Output output.cell(cellRef, thisStr); } else if ("f".equals(name)) { fIsOpen = false; } else if ("is".equals(name)) { isIsOpen = false; } else if ("row".equals(name)) { output.endRow(); } else if ("oddHeader".equals(name) || "evenHeader".equals(name) || "firstHeader".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), true, name); } else if ("oddFooter".equals(name) || "evenFooter".equals(name) || "firstFooter".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), false, name); } }
From source file:net.geoprism.data.etl.excel.XSSFSheetXMLHandler.java
License:Open Source License
public void endElement(String uri, String localName, String name) throws SAXException { String thisStr = null;/* w w w . j a va 2 s . c o m*/ String thisData = null; // v => contents of a cell if (isTextTag(name)) { vIsOpen = false; // Process the value contents as required, now we have it all switch (nextDataType) { case BOOLEAN: char first = value.charAt(0); thisStr = first == '0' ? "FALSE" : "TRUE"; thisData = new String(thisStr); break; case ERROR: thisStr = "ERROR:" + value.toString(); thisData = new String(thisStr); break; case FORMULA: if (formulasNotResults) { thisStr = formula.toString(); thisData = new String(thisStr); } else { String fv = value.toString(); if (this.formatString != null) { try { // Try to use the value as a formattable number double d = Double.parseDouble(fv); thisStr = this.cellFormatter.formatRawCellContents(d, this.formatIndex, this.formatString); thisData = this.contentFormatter.formatRawCellContents(d, this.formatIndex, this.formatString); } catch (NumberFormatException e) { // Formula is a String result not a Numeric one thisStr = fv; thisData = new String(thisStr); } } else { // No formating applied, just do raw value in all cases thisStr = fv; thisData = new String(thisStr); } } break; case INLINE_STRING: // TODO: Can these ever have formatting on them? XSSFRichTextString rtsi = new XSSFRichTextString(value.toString()); thisStr = rtsi.toString(); thisData = new String(thisStr); break; case TEXT: String sstIndex = value.toString(); try { int idx = Integer.parseInt(sstIndex); XSSFRichTextString rtss = new XSSFRichTextString(sharedStringsTable.getEntryAt(idx)); thisStr = rtss.toString(); thisData = new String(thisStr); } catch (NumberFormatException ex) { System.err.println("Failed to parse SST index '" + sstIndex + "': " + ex.toString()); } break; case NUMBER: String n = value.toString(); if (this.formatString != null) { thisStr = cellFormatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); thisData = this.contentFormatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); } else { thisStr = n; thisData = new String(thisStr); } break; default: thisStr = "(TODO: Unexpected type: " + nextDataType + ")"; thisData = new String(thisStr); break; } if (DateUtil.isADateFormat(this.formatIndex, this.formatString)) { output.cell(cellRef, thisData, thisStr, ColumnType.DATE); } else { output.cell(cellRef, thisData, thisStr, nextDataType); } } else if ("f".equals(name)) { fIsOpen = false; } else if ("is".equals(name)) { isIsOpen = false; } else if ("row".equals(name)) { output.endRow(); } else if ("oddHeader".equals(name) || "evenHeader".equals(name) || "firstHeader".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), true, name); } else if ("oddFooter".equals(name) || "evenFooter".equals(name) || "firstFooter".equals(name)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), false, name); } }
From source file:org.apache.metamodel.excel.XlsxSheetToRowsHandler.java
License:Apache License
private String createValue() { if (_value.length() == 0) { return null; }/* w ww.j a v a2 s .co m*/ switch (_dataType) { case BOOL: char first = _value.charAt(0); return first == '0' ? "false" : "true"; case ERROR: logger.warn("Error-cell occurred: {}", _value); return _value.toString(); case FORMULA: return _value.toString(); case INLINESTR: XSSFRichTextString rtsi = new XSSFRichTextString(_value.toString()); return rtsi.toString(); case SSTINDEX: String sstIndex = _value.toString(); int idx = Integer.parseInt(sstIndex); XSSFRichTextString rtss = new XSSFRichTextString(_sharedStringTable.getEntryAt(idx)); return rtss.toString(); case NUMBER: final String numberString = _value.toString(); if (_formatString != null) { DataFormatter formatter = getDataFormatter(); if (HSSFDateUtil.isADateFormat(_formatIndex, _formatString)) { Date date = DateUtil.getJavaDate(Double.parseDouble(numberString)); return DateUtils.createDateFormat().format(date); } return formatter.formatRawCellContents(Double.parseDouble(numberString), _formatIndex, _formatString); } else { if (numberString.endsWith(".0")) { // xlsx only stores doubles, so integers get ".0" appended // to them return numberString.substring(0, numberString.length() - 2); } return numberString; } default: logger.error("Unsupported data type: {}", _dataType); return ""; } }
From source file:org.dhatim.fastexcel.reader.RowSpliterator.java
License:Apache License
private Row next() throws XMLStreamException { if (!"row".equals(r.getLocalName())) { throw new NoSuchElementException(); }/* ww w . j ava 2 s . co m*/ int rowIndex = r.getIntAttribute("r"); ArrayList<Cell> cells = new ArrayList<>(rowCapacity); int physicalCellCount = 0; while (r.goTo(() -> r.isStartElement("c") || r.isEndElement("row"))) { if ("row".equals(r.getLocalName())) { break; } String cellRef = r.getAttribute("r"); CellAddress addr = new CellAddress(cellRef); String type = r.getOptionalAttribute("t").orElse("n"); Object value; CellType cellType; String formula; String rawValue; if ("inlineStr".equals(type)) { Object v = null; String f = null; String rv = null; while (r.goTo(() -> r.isStartElement("is") || r.isEndElement("c") || r.isStartElement("f"))) { if ("is".equals(r.getLocalName())) { rv = r.getValueUntilEndElement("is"); XSSFRichTextString rtss = new XSSFRichTextString(rv); v = rtss.toString(); } else if ("f".equals(r.getLocalName())) { f = r.getValueUntilEndElement("f"); } else { break; } } value = v; formula = f; cellType = f == null ? CellType.STRING : CellType.FORMULA; rawValue = rv; } else if ("s".equals(type)) { r.goTo("v"); int index = Integer.parseInt(r.getValueUntilEndElement("v")); CTRst ctrst = workbook.getSharedStringsTable().getEntryAt(index); XSSFRichTextString rtss = new XSSFRichTextString(ctrst); value = rtss.toString(); cellType = CellType.STRING; formula = null; rawValue = ctrst.xmlText(); } else { Function<String, ?> parser; CellType definedType; switch (type) { case "b": definedType = CellType.BOOLEAN; parser = RowSpliterator::parseBoolean; break; case "e": definedType = CellType.ERROR; parser = Function.identity(); break; case "n": definedType = CellType.NUMBER; parser = RowSpliterator::parseNumber; break; case "str": definedType = CellType.FORMULA; parser = Function.identity(); break; default: throw new IllegalStateException("Unknown cell type : " + type); } Object v = null; String f = null; String rv = null; while (r.goTo(() -> r.isStartElement("v") || r.isEndElement("c") || r.isStartElement("f"))) { if ("v".equals(r.getLocalName())) { rv = r.getValueUntilEndElement("v"); v = "".equals(rv) ? null : parser.apply(rv); } else if ("f".equals(r.getLocalName())) { String ref = r.getAttribute("ref"); String t = r.getAttribute("t"); f = r.getValueUntilEndElement("f"); if ("array".equals(t) && ref != null) { CellRangeAddress range = CellRangeAddress.valueOf(ref); sharedFormula.put(range, f); } } else { break; } } if (f == null) { f = getSharedFormula(addr).orElse(null); } if (f == null && definedType == CellType.NUMBER && v == null) { cellType = CellType.EMPTY; formula = null; value = null; rawValue = rv; } else { cellType = f == null ? definedType : CellType.FORMULA; formula = f; value = v; rawValue = rv; } } if (addr.getColumn() >= cells.size()) { setSize(cells, addr.getColumn() + 1); } Cell cell = new Cell(workbook, cellType, value, addr, formula, rawValue); cells.set(addr.getColumn(), cell); physicalCellCount++; } rowCapacity = Math.max(rowCapacity, cells.size()); return new Row(rowIndex, physicalCellCount, cells.toArray(new Cell[cells.size()])); }
From source file:org.tiefaces.components.websheet.utility.ChartUtility.java
License:MIT License
/** * init chart data./* w ww . ja v a 2s .com*/ * * @param chartId * chartId. * @param chart * chart. * @param wb * wb. * @return chartdata. */ public static ChartData initChartDataFromXSSFChart(final String chartId, final XSSFChart chart, final XSSFWorkbook wb) { ThemesTable themeTable = wb.getStylesSource().getTheme(); ChartData chartData = new ChartData(); XSSFRichTextString chartTitle = chart.getTitle(); if (chartTitle != null) { chartData.setTitle(chartTitle.toString()); } CTChart ctChart = chart.getCTChart(); ChartType chartType = ChartUtility.getChartType(ctChart); if (chartType == null) { throw new IllegalChartException("Unknown chart type"); } chartData.setBgColor(ColorUtility.getBgColor(ctChart.getPlotArea(), themeTable)); chartData.setId(chartId); chartData.setType(chartType); List<CTCatAx> ctCatAxList = ctChart.getPlotArea().getCatAxList(); if ((ctCatAxList != null) && (!ctCatAxList.isEmpty())) { chartData.setCatAx(new ChartAxis(ctCatAxList.get(0))); } List<CTValAx> ctValAxList = ctChart.getPlotArea().getValAxList(); if ((ctValAxList != null) && (!ctValAxList.isEmpty())) { chartData.setValAx(new ChartAxis(ctValAxList.get(0))); } ChartObject ctObj = chartType.createChartObject(); if (ctObj == null) { throw new IllegalChartException("Cannot create chart object."); } setUpChartData(chartData, ctChart, themeTable, ctObj); return chartData; }
From source file:service.XSSFSheetHandler.java
public void endElement(String uri, String localName, String name) throws SAXException { String thisStr = null;//from w ww .ja v a2 s . co m // v => contents of a cell if ("v".equals(name)) { // Process the value contents as required. // Do now, as characters() may be called more than once switch (nextDataType) { case BOOL: char first = value.charAt(0); thisStr = first == '0' ? "FALSE" : "TRUE"; break; case ERROR: thisStr = "ERROR:" + value.toString() + '"'; break; case FORMULA: // A formula could result in a string value, // so always add double-quote characters. thisStr = value.toString(); break; case INLINESTR: // TODO: have seen an example of this, so it's untested. XSSFRichTextString rtsi = new XSSFRichTextString(value.toString()); thisStr = rtsi.toString(); break; case SSTINDEX: String sstIndex = value.toString(); try { int idx = Integer.parseInt(sstIndex); XSSFRichTextString rtss = new XSSFRichTextString(sharedStringsTable.getEntryAt(idx)); thisStr = rtss.toString(); } catch (NumberFormatException ex) { output.println("Failed to parse SST index '" + sstIndex + "': " + ex.toString()); } break; case NUMBER: String n = value.toString(); if (this.formatString != null) thisStr = formatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); else thisStr = n; break; default: thisStr = "(TODO: Unexpected type: " + nextDataType + ")"; break; } // Output after we've seen the string contents // Emit commas for any fields that were missing on this row if (lastColumnNumber == -1) { lastColumnNumber = 0; } /* for (int i = lastColumnNumber; i < thisColumn; ++i) output.print(',');*/ // Might be the empty string. handlerInterface.processEachRecord(thisColumn, countrows, thisStr); /*if(thisColumn == 1 || thisColumn ==0 || thisColumn==2) strValues[thisColumn] = thisStr;*/ // Update column if (thisColumn > -1) lastColumnNumber = thisColumn; } else if ("row".equals(name)) { // Print out any missing commas if needed if (minColumns > 0) { // Columns are 0 based if (lastColumnNumber == -1) { lastColumnNumber = 0; } /* for (int i = lastColumnNumber; i < (this.minColumnCount); i++) { output.print(','); }*/ } handlerInterface.rowCompleted(); // We're onto a new row /* if(strValues[1].equals("Y")) { output.println("found : "+strValues[0]+" "+strValues[2]); count++; }*/ countrows++; lastColumnNumber = -1; } }
From source file:utilities.SmapSheetXMLHandler.java
License:Apache License
@Override public void endElement(String uri, String localName, String qName) throws SAXException { if (uri != null && !uri.equals(NS_SPREADSHEETML)) { return;//from w ww .j av a2 s .co m } String thisStr = null; // v => contents of a cell if (isTextTag(localName)) { vIsOpen = false; // Process the value contents as required, now we have it all switch (nextDataType) { case BOOLEAN: char first = value.charAt(0); thisStr = first == '0' ? "FALSE" : "TRUE"; break; case ERROR: thisStr = "ERROR:" + value; break; case FORMULA: if (formulasNotResults) { thisStr = formula.toString(); } else { String fv = value.toString(); if (this.formatString != null) { try { // Try to use the value as a formattable number double d = Double.parseDouble(fv); thisStr = formatter.formatRawCellContents(d, this.formatIndex, this.formatString); } catch (NumberFormatException e) { // Formula is a String result not a Numeric one thisStr = fv; } } else { // No formatting applied, just do raw value in all cases thisStr = fv; } } break; case INLINE_STRING: // TODO: Can these ever have formatting on them? XSSFRichTextString rtsi = new XSSFRichTextString(value.toString()); thisStr = rtsi.toString(); break; case SST_STRING: String sstIndex = value.toString(); try { int idx = Integer.parseInt(sstIndex); RichTextString rtss = sharedStringsTable.getItemAt(idx); thisStr = rtss.toString(); } catch (NumberFormatException ex) { logger.log(POILogger.ERROR, "Failed to parse SST index '" + sstIndex, ex); } break; case NUMBER: String n = value.toString(); if (this.formatString != null && n.length() > 0) { // smap Check for date boolean isDate = false; double d = Double.parseDouble(n); if (DateUtil.isValidExcelDate(d)) { ExcelNumberFormat nf = ExcelNumberFormat.from(style); if (nf != null) { isDate = DateUtil.isADateFormat(nf); } } if (isDate) { try { Date dv = DateUtil.getJavaDate(d); thisStr = sdf.format(dv); } catch (Exception e) { } } else { thisStr = formatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); } } else thisStr = n; break; default: thisStr = "(TODO: Unexpected type: " + nextDataType + ")"; break; } // Do we have a comment for this cell? checkForEmptyCellComments(EmptyCellCommentsCheckType.CELL); XSSFComment comment = comments != null ? comments.findCellComment(new CellAddress(cellRef)) : null; // Output output.cell(cellRef, thisStr, comment, nextDataType, formatString); } else if ("f".equals(localName)) { fIsOpen = false; } else if ("is".equals(localName)) { isIsOpen = false; } else if ("row".equals(localName)) { // Handle any "missing" cells which had comments attached checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_ROW); // Finish up the row output.endRow(rowNum); // some sheets do not have rowNum set in the XML, Excel can read them so we should try to read them as well nextRowNum = rowNum + 1; } else if ("sheetData".equals(localName)) { // Handle any "missing" cells which had comments attached checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_SHEET_DATA); // indicate that this sheet is now done output.endSheet(); } else if ("oddHeader".equals(localName) || "evenHeader".equals(localName) || "firstHeader".equals(localName)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), true, localName); } else if ("oddFooter".equals(localName) || "evenFooter".equals(localName) || "firstFooter".equals(localName)) { hfIsOpen = false; output.headerFooter(headerFooter.toString(), false, localName); } }