private boolean tryOldFormat(byte[] data) throws XSSFBParseException { //undocumented what is contained in these 8 bytes. //for the non-beta xlsb files, this would be 4, not 8. int offset = 8; long iTabID = LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE; if (iTabID < 1 || iTabID > 0x0000FFFFL) { throw new XSSFBParseException("table id out of range: "+iTabID); } StringBuilder sb = new StringBuilder(); offset += XSSFBUtils.readXLWideString(data, offset, sb); String relId = sb.toString(); sb.setLength(0); offset += XSSFBUtils.readXLWideString(data, offset, sb); String name = sb.toString(); if (relId.trim().length() > 0) { sheets.add(new XSSFSheetRef(relId, name)); } if (offset == data.length) { return true; } return false; }
Iterator<XSSFSheetRef> createSheetIteratorFromWB(PackagePart wb) throws IOException { XMLSheetRefReader xmlSheetRefReader = new XMLSheetRefReader(); XMLReader xmlReader; try { xmlReader = SAXHelper.newXMLReader(); } catch (ParserConfigurationException e) { throw new POIXMLException(e); } catch (SAXException e) { throw new POIXMLException(e); } xmlReader.setContentHandler(xmlSheetRefReader); try { xmlReader.parse(new InputSource(wb.getInputStream())); } catch (SAXException e) { throw new POIXMLException(e); } List<XSSFSheetRef> validSheets = new ArrayList<>(); for (XSSFSheetRef xssfSheetRef : xmlSheetRefReader.getSheetRefs()) { //if there's no relationship id, silently skip the sheet String sheetId = xssfSheetRef.getId(); if (sheetId != null && sheetId.length() > 0) { validSheets.add(xssfSheetRef); } } return validSheets.iterator(); }
Iterator<XSSFSheetRef> createSheetIteratorFromWB(PackagePart wb) throws IOException { XMLSheetRefReader xmlSheetRefReader = new XMLSheetRefReader(); XMLReader xmlReader; try { xmlReader = SAXHelper.newXMLReader(); } catch (ParserConfigurationException e) { throw new POIXMLException(e); } catch (SAXException e) { throw new POIXMLException(e); } xmlReader.setContentHandler(xmlSheetRefReader); try { xmlReader.parse(new InputSource(wb.getInputStream())); } catch (SAXException e) { throw new POIXMLException(e); } List<XSSFSheetRef> validSheets = new ArrayList<>(); for (XSSFSheetRef xssfSheetRef : xmlSheetRefReader.getSheetRefs()) { //if there's no relationship id, silently skip the sheet String sheetId = xssfSheetRef.getId(); if (sheetId != null && sheetId.length() > 0) { validSheets.add(xssfSheetRef); } } return validSheets.iterator(); }
private boolean tryOldFormat(byte[] data) throws XSSFBParseException { //undocumented what is contained in these 8 bytes. //for the non-beta xlsb files, this would be 4, not 8. int offset = 8; long iTabID = LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE; if (iTabID < 1 || iTabID > 0x0000FFFFL) { throw new XSSFBParseException("table id out of range: "+iTabID); } StringBuilder sb = new StringBuilder(); offset += XSSFBUtils.readXLWideString(data, offset, sb); String relId = sb.toString(); sb.setLength(0); offset += XSSFBUtils.readXLWideString(data, offset, sb); String name = sb.toString(); if (relId.trim().length() > 0) { sheets.add(new XSSFSheetRef(relId, name)); } if (offset == data.length) { return true; } return false; }
@Override public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException { if (localName.equalsIgnoreCase(SHEET)) { String name = null; String id = null; for (int i = 0; i < attrs.getLength(); i++) { final String attrName = attrs.getLocalName(i); if (attrName.equalsIgnoreCase(NAME)) { name = attrs.getValue(i); } else if (attrName.equalsIgnoreCase(ID)) { id = attrs.getValue(i); } if (name != null && id != null) { sheetRefs.add(new XSSFSheetRef(id, name)); break; } } } }
/** * Returns input stream of the next sheet in the iteration * * @return input stream of the next sheet in the iteration */ @Override public InputStream next() { xssfSheetRef = sheetIterator.next(); String sheetId = xssfSheetRef.getId(); try { PackagePart sheetPkg = sheetMap.get(sheetId); return sheetPkg.getInputStream(); } catch (IOException e) { throw new POIXMLException(e); } }
private void tryToAddWorksheet(byte[] data) throws XSSFBParseException { int offset = 0; //this is the sheet state #2.5.142 /*long hsShtat =*/ //noinspection ResultOfMethodCallIgnored LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE; long iTabID = LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE; //according to #2.4.304 if (iTabID < 1 || iTabID > 0x0000FFFFL) { throw new XSSFBParseException("table id out of range: "+iTabID); } StringBuilder sb = new StringBuilder(); offset += XSSFBUtils.readXLWideString(data, offset, sb); String relId = sb.toString(); sb.setLength(0); /*offset +=*/ XSSFBUtils.readXLWideString(data, offset, sb); String name = sb.toString(); if (relId.trim().length() > 0) { sheets.add(new XSSFSheetRef(relId, name)); } }
public PackagePart getSheetPart() { String sheetId = xssfSheetRef.getId(); return sheetMap.get(sheetId); }
/** * Returns name of the current sheet * * @return name of the current sheet */ public String getSheetName() { return xssfSheetRef.getName(); }
private void tryToAddWorksheet(byte[] data) throws XSSFBParseException { int offset = 0; //this is the sheet state #2.5.142 /*long hsShtat =*/ //noinspection ResultOfMethodCallIgnored LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE; long iTabID = LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE; //according to #2.4.304 if (iTabID < 1 || iTabID > 0x0000FFFFL) { throw new XSSFBParseException("table id out of range: "+iTabID); } StringBuilder sb = new StringBuilder(); offset += XSSFBUtils.readXLWideString(data, offset, sb); String relId = sb.toString(); sb.setLength(0); /*offset +=*/ XSSFBUtils.readXLWideString(data, offset, sb); String name = sb.toString(); if (relId.trim().length() > 0) { sheets.add(new XSSFSheetRef(relId, name)); } }
@Override public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException { if (localName.equalsIgnoreCase(SHEET)) { String name = null; String id = null; for (int i = 0; i < attrs.getLength(); i++) { final String attrName = attrs.getLocalName(i); if (attrName.equalsIgnoreCase(NAME)) { name = attrs.getValue(i); } else if (attrName.equalsIgnoreCase(ID)) { id = attrs.getValue(i); } if (name != null && id != null) { sheetRefs.add(new XSSFSheetRef(id, name)); break; } } } }
/** * Returns input stream of the next sheet in the iteration * * @return input stream of the next sheet in the iteration */ @Override public InputStream next() { xssfSheetRef = sheetIterator.next(); String sheetId = xssfSheetRef.getId(); try { PackagePart sheetPkg = sheetMap.get(sheetId); return sheetPkg.getInputStream(); } catch (IOException e) { throw new POIXMLException(e); } }
public PackagePart getSheetPart() { String sheetId = xssfSheetRef.getId(); return sheetMap.get(sheetId); }
/** * Returns name of the current sheet * * @return name of the current sheet */ public String getSheetName() { return xssfSheetRef.getName(); }