List of usage examples for org.apache.poi.xssf.eventusermodel XSSFReader XSSFReader
public XSSFReader(OPCPackage pkg) throws IOException, OpenXML4JException
From source file:org.generationcp.middleware.util.PoiEventUserModel.java
License:Open Source License
public void areSheetRowsOverMaxLimit(String filename, int sheetIndex, int maxLimit) throws Exception { this.maxLimit = maxLimit; OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader(pkg); XMLReader parser = this.fetchSheetParser(); InputStream sheet2 = null;// w ww.j av a 2 s .c om // rId2 found by processing the Workbook // Seems to either be rId# or rSheet# try { sheet2 = r.getSheet("rId" + (sheetIndex + 1)); } catch (Exception e) { PoiEventUserModel.LOG.error("Sheet could not be retrieved", e); } if (sheet2 == null) { try { sheet2 = r.getSheet("rSheet" + (sheetIndex + 1)); } catch (Exception e) { PoiEventUserModel.LOG.error("Sheet could not be retrieved", e); } } InputSource sheetSource = new InputSource(sheet2); parser.parse(sheetSource); if (sheet2 != null) { sheet2.close(); } }
From source file:org.generationcp.middleware.util.PoiEventUserModel.java
License:Open Source License
public void isAnySheetRowsOverMaxLimit(String filename, int maxLimit) throws Exception { this.maxLimit = maxLimit; OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader(pkg); XMLReader parser = this.fetchSheetParser(); for (int i = 1; i < 10; i++) { InputStream sheet = null; // rId2 found by processing the Workbook // Seems to either be rId# or rSheet# try {// w w w . j a v a 2 s.c o m sheet = r.getSheet("rId" + i); } catch (Exception e) { e.printStackTrace(); } if (sheet == null) { try { sheet = r.getSheet("rSheet" + i); } catch (Exception e) { e.printStackTrace(); } } if (sheet != null) { InputSource sheetSource = new InputSource(sheet); parser.parse(sheetSource); sheet.close(); } else { break; } } }
From source file:org.jberet.support.io.ExcelStreamingItemReader.java
License:Open Source License
@Override protected void initWorkbookAndSheet(final int startRowNumber) throws Exception { InputStream workbookDataInputStream = null; XMLStreamReader workbookStreamReader = null; try {/*from w w w . j av a 2s . c om*/ final OPCPackage opcPackage = OPCPackage.open(inputStream); final XSSFReader xssfReader = new XSSFReader(opcPackage); workbookDataInputStream = xssfReader.getWorkbookData(); final XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); workbookStreamReader = xmlInputFactory.createXMLStreamReader(workbookDataInputStream); sharedStringsTable = xssfReader.getSharedStringsTable(); /* sample sheet element: <sheets> <sheet name="Movies" sheetId="1" state="visible" r:id="rId2"/> <sheet name="Person" sheetId="2" state="visible" r:id="rId3"/> </sheets> */ while (workbookStreamReader.hasNext()) { if (workbookStreamReader.next() == XMLStreamConstants.START_ELEMENT && "sheet".equals(workbookStreamReader.getLocalName())) { final String shn = workbookStreamReader.getAttributeValue(null, "name"); final String shId = workbookStreamReader.getAttributeValue(null, "sheetId"); if ((sheetName != null && sheetName.equals(shn)) || (sheetName == null && String.valueOf(this.sheetIndex + 1).equals(shId))) { //this is the target sheet final String relationshipId = workbookStreamReader.getAttributeValue(schemaRelationships, "id"); sheetInputStream = xssfReader.getSheet(relationshipId); sheetStreamReader = xmlInputFactory.createXMLStreamReader(sheetInputStream); break; } } } } finally { if (workbookDataInputStream != null) { try { workbookDataInputStream.close(); } catch (final Exception e) { //ignore } } if (workbookStreamReader != null) { try { workbookStreamReader.close(); } catch (final Exception e) { //ignore } } } /* sample row element: <row r="1" customFormat="false" ht="15" hidden="false" customHeight="false" outlineLevel="0" collapsed="false"> <c r="A1" s="0" t="s"> <v>0</v> </c> <c r="B1" s="0" t="s"> <v>1</v> </c> <c r="C1" s="0" t="s"> <v>2</v> </c> <c r="D1" s="0" t="s"> <v>3</v> </c> </row> For inlineStr: <c r="A1" t="inlineStr"> <is> <t>Date</t> </is> </c> Note: a blank cell does not show up in xml at all. So for list type beanType, need to detect blank cell and add null; for map or custom beanType, need to link to the correct header column by r attribute. */ if (header == null) { headerMapping = new HashMap<String, String>(); outerLoop: while (sheetStreamReader.hasNext()) { if (sheetStreamReader.next() == XMLStreamConstants.START_ELEMENT && "row".equals(sheetStreamReader.getLocalName())) { final int rowNum = Integer.parseInt(sheetStreamReader.getAttributeValue(null, "r")); if (headerRow + 1 == rowNum) { // got the header row, next loop through header row cells final List<String> headerVals = new ArrayList<String>(); while (sheetStreamReader.hasNext()) { final int event = sheetStreamReader.next(); if (event == XMLStreamConstants.START_ELEMENT && "c".equals(sheetStreamReader.getLocalName())) { final String label = getColumnLabel(sheetStreamReader.getAttributeValue(null, "r")); final String value = getCellStringValue(); headerVals.add(value); headerMapping.put(label, value); } else if (event == XMLStreamConstants.END_ELEMENT && "row".equals(sheetStreamReader.getLocalName())) { header = headerVals.toArray(new String[headerVals.size()]); currentRowNum = rowNum - 1; break outerLoop; } } } } } } //fast forward to the start row, which may not immediately follow header row while (currentRowNum < startRowNumber - 1 && sheetStreamReader.hasNext()) { if (sheetStreamReader.next() == XMLStreamConstants.START_ELEMENT && "row".equals(sheetStreamReader.getLocalName())) { currentRowNum = Integer.parseInt(sheetStreamReader.getAttributeValue(null, "r")) - 1; } else if (sheetStreamReader.next() == XMLStreamConstants.END_ELEMENT && "row".equals(sheetStreamReader.getLocalName())) { if (currentRowNum >= startRowNumber - 1) { break; } } } }
From source file:org.jreserve.gui.poi.read.xlsx.XlsxReader.java
License:Open Source License
@Override public T read(File file) throws IOException { try {//w w w . j a v a 2s . c om pkg = OPCPackage.open(file); XSSFReader reader = new XSSFReader(pkg); readReader(reader); return getResult(); } catch (Exception ex) { String path = file == null ? null : file.getAbsolutePath(); String msg = String.format("Unabel to read file '%s'!", path); logger.log(Level.SEVERE, msg, ex); throw new IOException(msg, ex); } finally { close(); } }
From source file:org.pentaho.di.trans.steps.excelinput.staxpoi.StaxPoiWorkbook.java
License:Apache License
private void openFile(OPCPackage pkg, String encoding) throws KettleException { InputStream workbookData = null; XMLStreamReader workbookReader = null; try {/* w w w . j a va 2 s. c o m*/ reader = new XSSFReader(pkg); sheetNameIDMap = new LinkedHashMap<String, String>(); workbookData = reader.getWorkbookData(); XMLInputFactory factory = XMLInputFactory.newInstance(); workbookReader = factory.createXMLStreamReader(workbookData); while (workbookReader.hasNext()) { if (workbookReader.next() == XMLStreamConstants.START_ELEMENT && workbookReader.getLocalName().equals("sheet")) { String sheetName = workbookReader.getAttributeValue(null, "name"); String sheetID = workbookReader.getAttributeValue(RELATION_NS_URI, "id"); sheetNameIDMap.put(sheetName, sheetID); } } sheetNames = new String[sheetNameIDMap.size()]; int i = 0; for (String sheetName : sheetNameIDMap.keySet()) { sheetNames[i++] = sheetName; } } catch (Exception e) { throw new KettleException(e); } finally { if (workbookReader != null) { try { workbookReader.close(); } catch (XMLStreamException e) { throw new KettleException(e); } } if (workbookData != null) { try { workbookData.close(); } catch (IOException e) { throw new KettleException(e); } } } }
From source file:org.talend.dataprep.schema.xls.streaming.StreamingSheetTest.java
License:Open Source License
@Before public void setUp() throws Exception { OPCPackage pkg = OPCPackage.open(StreamingSheetTest.class.getResourceAsStream("../dates.xlsx")); XSSFReader reader = new XSSFReader(pkg); SharedStringsTable sst = reader.getSharedStringsTable(); StylesTable styles = reader.getStylesTable(); Iterator<InputStream> iter = reader.getSheetsData(); XMLEventReader parser = XMLInputFactory.newInstance().createXMLEventReader(iter.next()); final StreamingSheetReader streamingSheetReader = new StreamingSheetReader(sst, styles, parser, 10); streamingSheet = new StreamingSheet("name", streamingSheetReader); }
From source file:org.talend.dataprep.schema.xls.streaming.StreamingWorkbookReader.java
License:Open Source License
public void init(File f) { try {// w ww .ja va2s . c o m if (builder.getPassword() != null) { // Based on: https://poi.apache.org/encryption.html POIFSFileSystem poifs = new POIFSFileSystem(f); EncryptionInfo info = new EncryptionInfo(poifs); Decryptor d = Decryptor.getInstance(info); d.verifyPassword(builder.getPassword()); pkg = OPCPackage.open(d.getDataStream(poifs)); } else { pkg = OPCPackage.open(f); } XSSFReader reader = new XSSFReader(pkg); SharedStringsTable sst = reader.getSharedStringsTable(); StylesTable styles = reader.getStylesTable(); loadSheets(reader, sst, styles, builder.getRowCacheSize()); } catch (IOException e) { throw new OpenException("Failed to open file", e); } catch (OpenXML4JException | XMLStreamException e) { throw new ReadException("Unable to read workbook", e); } catch (GeneralSecurityException e) { throw new ReadException("Unable to read workbook - Decryption failed", e); } }
From source file:org.talend.dataprep.schema.xls.XlsUtilsTest.java
License:Open Source License
@Test public void get_active_sheets() throws Exception { OPCPackage container = OPCPackage.open(getClass().getResourceAsStream("000_DTA_DailyTimeLog.xlsm")); XSSFReader xssfReader = new XSSFReader(container); List<String> names = XlsUtils.getActiveSheetsFromWorkbookSpec(xssfReader.getWorkbookData()); Assertions.assertThat(names).isNotEmpty() // .containsExactly("MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY", "WEEK SUMMARY"); }
From source file:org.talend.repository.ui.wizards.metadata.connection.files.excel.ExcelReader.java
License:Open Source License
private void init() throws BiffException, IOException { // hywang modified for excel 2007 // if (excelPath.endsWith(".xls")) { //$NON-NLS-1$ // isXlsx = false; // } else if (excelPath.endsWith(".xlsx")) { //$NON-NLS-1$ // isXlsx = true; // }//w w w . jav a2s . c o m if (!isXlsx) { WorkbookSettings worksetting = new WorkbookSettings(); //worksetting.setEncoding("ISO-8859-15"); //$NON-NLS-1$ worksetting.setCellValidationDisabled(true); worksetting.setSuppressWarnings(true); workbook = Workbook.getWorkbook(new File(excelPath), worksetting); } else { // modify for bug 12174. File file = new File(excelPath); OPCPackage clone = null; try { FileInputStream in = new FileInputStream(file); OPCPackage open = OPCPackage.open(in); clone = PackageHelper.clone(open, createTempFile()); open.close(); // Package createPackage = Package.openOrCreate(file); // clone = PackageHelper.clone(createPackage); } catch (InvalidFormatException e) { e.printStackTrace(); } catch (OpenXML4JException e) { e.printStackTrace(); } if (clone != null) { List<String> sheetlist = new ArrayList<String>(); // modified for bug TDI-26614, Use XSSF and SAX (Event API) to parse excel 2007, only need small memory // footprint if (isXlsx && (EVENT_MODE).equals(generationMode)) { try { XSSFReader xssfReader = new XSSFReader(clone); XSSFReader.SheetIterator sheets = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); while (sheets.hasNext()) { sheets.next(); String sheetName = sheets.getSheetName(); sheetlist.add(sheetName); } } catch (OpenXML4JException e) { CommonExceptionHandler.process(e); } } else { xwb = new XSSFWorkbook(clone); for (XSSFSheet sheet : xwb) { sheetlist.add(sheet.getSheetName()); } } sheetNamesForXlsx = new String[sheetlist.size()]; for (int i = 0; i < sheetlist.size(); i++) { sheetNamesForXlsx[i] = sheetlist.get(i); } sheetlist.clear(); } } }
From source file:packtest.FromHowTo.java
License:Apache License
public void processFirstSheet(String filename) throws Exception { OPCPackage pkg = OPCPackage.open(filename, PackageAccess.READ); try {//w ww .j av a 2 s . co m XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); // process the first sheet InputStream sheet2 = r.getSheetsData().next(); InputSource sheetSource = new InputSource(sheet2); parser.parse(sheetSource); sheet2.close(); } finally { pkg.close(); } }