Example usage for org.apache.poi.xssf.eventusermodel XSSFReader getSheet

List of usage examples for org.apache.poi.xssf.eventusermodel XSSFReader getSheet

Introduction

In this page you can find the example usage for org.apache.poi.xssf.eventusermodel XSSFReader getSheet.

Prototype

public InputStream getSheet(String relId) throws IOException, InvalidFormatException 

Source Link

Document

Returns an InputStream to read the contents of the specified Sheet.

Usage

From source file:ca.tsc.special_request_tool.testing.FromHowTo.java

License:Apache License

public void processOneSheet(String filename, InfoHolder holder) throws Exception {
    OPCPackage pkg = OPCPackage.open(new File(filename));
    XSSFReader r = new XSSFReader(pkg);
    SharedStringsTable sst = r.getSharedStringsTable();

    XMLReader parser = fetchSheetParser(sst, holder);

    // rId2 found by processing the Workbook
    // Seems to either be rId# or rSheet#
    InputStream sheet2 = r.getSheet("rId2");
    InputSource sheetSource = new InputSource(sheet2);
    parser.parse(sheetSource);//from  w  w  w  .j a  v  a  2 s .c  o  m
    sheet2.close();
}

From source file:com.anthill.excelcompare.main.impl.FromHowTo.java

License:Apache License

public void processOneSheet(String filename) throws Exception {
    OPCPackage pkg = OPCPackage.open(filename);
    XSSFReader r = new XSSFReader(pkg);
    SharedStringsTable sst = r.getSharedStringsTable();

    XMLReader parser = fetchSheetParser(sst);

    // rId2 found by processing the Workbook
    // Seems to either be rId# or rSheet#
    InputStream sheet2 = r.getSheet("rId2");
    InputSource sheetSource = new InputSource(sheet2);
    parser.parse(sheetSource);//from   ww w .ja v a  2s . c o m
    sheet2.close();
}

From source file:com.ljh.excel.parser.FromHowTo.java

License:Apache License

public void processFirstSheet(String filename) throws Exception {
    OPCPackage pkg = OPCPackage.open(filename);
    XSSFReader r = new XSSFReader(pkg);
    SharedStringsTable sst = r.getSharedStringsTable();

    XMLReader parser = fetchSheetParser(sst);

    // To look up the Sheet Name / Sheet Order / rID,
    //  you need to process the core Workbook stream.
    // Normally it's of the form rId# or rSheet#
    InputStream sheet2 = r.getSheet("rId2");
    InputSource sheetSource = new InputSource(sheet2);
    parser.parse(sheetSource);/*from ww  w  . j a  v a 2 s.co  m*/
    sheet2.close();
}

From source file:com.mycompany.javaapplicaton3.ExampleEventUserModel.java

public void processOneSheet(String filename) throws Exception {
    OPCPackage pkg = OPCPackage.open(filename);
    XSSFReader r = new XSSFReader(pkg);
    SharedStringsTable sst = r.getSharedStringsTable();

    XMLReader parser = fetchSheetParser(sst);

    // rId2 found by processing the Workbook
    // Seems to either be rId# or rSheet#
    InputStream sheet2 = r.getSheet("rId1");
    InputSource sheetSource = new InputSource(sheet2);
    parser.parse(sheetSource);//from  w w  w  .  j  ava 2s.  c o m
    sheet2.close();
}

From source file:ec.util.spreadsheet.poi.FastPoiBook.java

License:EUPL

private static ByteSource newSheetSupplier(final XSSFReader reader, final String relationId) {
    return new ByteSource() {
        @Override//from   ww  w .j a  v a  2s  . com
        public InputStream openStream() throws IOException {
            try {
                return reader.getSheet(relationId);
            } catch (InvalidFormatException ex) {
                throw new IOException(ex);
            }
        }
    };
}

From source file:edu.harvard.iq.dataverse.ingest.tabulardata.impl.plugins.xlsx.XLSXFileReader.java

License:Apache License

public void processSheet(InputStream inputStream, DataTable dataTable, PrintWriter tempOut) throws Exception {
    OPCPackage pkg = OPCPackage.open(inputStream);
    XSSFReader r = new XSSFReader(pkg);
    SharedStringsTable sst = r.getSharedStringsTable();

    XMLReader parser = fetchSheetParser(sst, dataTable, tempOut);

    // rId2 found by processing the Workbook
    // Seems to either be rId# or rSheet#
    InputStream sheet1 = r.getSheet("rId1");
    InputSource sheetSource = new InputSource(sheet1);
    parser.parse(sheetSource);//from   w  ww. java  2 s .c o m
    sheet1.close();
}

From source file:org.apache.metamodel.excel.XlsxSpreadsheetReaderDelegate.java

License:Apache License

private void buildColumns(final MutableTable table, final String relationshipId, final XSSFReader xssfReader)
        throws Exception {
    final InputStream sheetData = xssfReader.getSheet(relationshipId);

    final XlsxRowCallback rowCallback = new XlsxRowCallback() {
        @Override/* w ww . java 2s  . c om*/
        public boolean row(int rowNumber, List<String> values, List<Style> styles) {
            final int columnNameLineNumber = _configuration.getColumnNameLineNumber();
            final boolean hasColumnNameLine = columnNameLineNumber != ExcelConfiguration.NO_COLUMN_NAME_LINE;

            if (hasColumnNameLine) {
                final int zeroBasedLineNumber = columnNameLineNumber - 1;
                if (rowNumber < zeroBasedLineNumber) {
                    // jump to read the next line
                    return true;
                }
            }

            final ColumnNamingStrategy columnNamingStrategy = _configuration.getColumnNamingStrategy();
            try (ColumnNamingSession session = columnNamingStrategy.startColumnNamingSession()) {
                for (int i = 0; i < values.size(); i++) {
                    final String intrinsicColumnName = hasColumnNameLine ? values.get(i) : null;
                    final String columnName = session
                            .getNextColumnName(new ColumnNamingContextImpl(table, intrinsicColumnName, i));

                    if (!(_configuration.isSkipEmptyColumns() && values.get(i) == null)) {
                        table.addColumn(new MutableColumn(columnName, ColumnType.STRING, table, i, true));
                    }
                }
            }

            // now we're done, no more reading
            return false;
        }
    };
    final XlsxSheetToRowsHandler handler = new XlsxSheetToRowsHandler(rowCallback, xssfReader, _configuration);

    final XMLReader sheetParser = ExcelUtils.createXmlReader();
    sheetParser.setContentHandler(handler);
    try {
        sheetParser.parse(new InputSource(sheetData));
    } catch (XlsxStopParsingException e) {
        logger.debug("Parsing stop signal thrown");
    } finally {
        FileHelper.safeClose(sheetData);
    }
}

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;/*from  w w w  . j  a  v a  2s  .co m*/
    // 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  .ja  va  2s.c om
            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  ava2 s. 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;
            }
        }
    }
}