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

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

Introduction

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

Prototype

public Iterator<InputStream> getSheetsData() throws IOException, InvalidFormatException 

Source Link

Document

Returns an Iterator which will let you get at all the different Sheets in turn.

Usage

From source file:XLSX2CSV.java

License:Apache License

public void process() throws IOException, OpenXML4JException, ParserConfigurationException, SAXException {

    ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage);
    XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
    StylesTable styles = xssfReader.getStylesTable();
    XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();
    int index = 0;
    while (iter.hasNext()) {
        InputStream stream = iter.next();
        String sheetName = iter.getSheetName();
        this.output.println();
        this.output.println(sheetName + " [index=" + index + "]:");
        processSheet(styles, strings, stream);
        stream.close();//from  w ww  . java2 s . com
        ++index;
    }
    close();
}

From source file:adams.data.io.input.ExcelStreamingSpreadSheetReader.java

License:Open Source License

/**
 * Determines the number of sheets in the file.
 * // w  w  w.ja  va  2s .c  o  m
 * @param file   the file to inspec
 * @return      the number of sheets
 * @throws Exception   if reading of file fails
 */
protected int getSheetCount(File file) throws Exception {
    int result;
    OPCPackage pkg;
    XSSFReader reader;
    Iterator<InputStream> sheets;
    InputStream sheet;

    pkg = OPCPackage.open(file.getAbsolutePath(), PackageAccess.READ);
    reader = new XSSFReader(pkg);
    sheets = reader.getSheetsData();
    result = 0;
    while (sheets.hasNext()) {
        if (m_Stopped)
            break;
        sheet = sheets.next();
        sheet.close();
        result++;
    }
    pkg.close();

    return result;
}

From source file:adams.data.io.input.ExcelStreamingSpreadSheetReader.java

License:Open Source License

/**
 * Reads the spreadsheet content from the specified file.
 *
 * @param file   the file to read from/*w  w  w  .  j a  v a  2s . c  om*/
 * @return      the spreadsheets or null in case of an error
 */
@Override
protected List<SpreadSheet> doReadRange(File file) {
    List<SpreadSheet> result;
    int count;
    OPCPackage pkg;
    XSSFReader reader;
    SharedStringsTable sst;
    XMLReader parser;
    XSSFReader.SheetIterator sheets;
    InputStream sheet;
    SpreadSheet spsheet;
    InputSource sheetSource;
    HashSet<Integer> indices;
    List<String> header;
    Row rowOld;
    Row row;
    int i;

    result = new ArrayList<>();

    try {
        m_SheetRange.setMax(getSheetCount(file));
        indices = new HashSet<>(Utils.toList(m_SheetRange.getIntIndices()));
        pkg = OPCPackage.open(file.getAbsolutePath(), PackageAccess.READ);
        reader = new XSSFReader(pkg);
        sst = reader.getSharedStringsTable();
        sheets = (XSSFReader.SheetIterator) reader.getSheetsData();
        count = 0;
        while (sheets.hasNext()) {
            if (m_Stopped)
                break;
            sheet = null;
            try {
                sheet = sheets.next();
                if (indices.contains(count)) {
                    spsheet = m_SpreadSheetType.newInstance();
                    spsheet.setDataRowClass(m_DataRowType.getClass());
                    spsheet.setName(sheets.getSheetName());
                    parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
                    m_Handler = new SheetHandler(this, spsheet, sst);
                    parser.setContentHandler(m_Handler);
                    sheetSource = new InputSource(sheet);
                    parser.parse(sheetSource);
                    // fix header?
                    if (!getCustomColumnHeaders().trim().isEmpty()) {
                        header = SpreadSheetUtils.createHeader(spsheet.getColumnCount(),
                                getCustomColumnHeaders());
                        row = spsheet.getHeaderRow();
                        for (i = 0; i < header.size() && i < spsheet.getColumnCount(); i++)
                            row.getCell(i).setContent(header.get(i));
                    }
                    result.add(spsheet);
                    // missing types?
                    if (m_Handler.getUnknownCellTypes().size() > 0) {
                        getLogger().severe("Unknown cell types: " + m_Handler.getUnknownCellTypes());
                        for (String type : m_Handler.getUnknownCellTypes())
                            getLogger().severe("- cell type '" + type + "': "
                                    + m_Handler.getUnknownCellTypesExamples().get(type));
                    }
                    if (m_Handler.getUnknownCellStrings().size() > 0) {
                        getLogger().severe("Unknown cell strings: " + m_Handler.getUnknownCellStrings());
                        for (String str : m_Handler.getUnknownCellStrings())
                            getLogger().severe("- cell string '" + str + "': "
                                    + m_Handler.getUnknownCellStringsExamples().get(str));
                    }
                }
            } catch (Exception e) {
                getLogger().log(Level.SEVERE, "Failed to process sheet:", e);
            }

            FileUtils.closeQuietly(sheet);

            count++;
        }
        pkg.close();
    } catch (ParseStopException e) {
        getLogger().severe("Parsing stopped!");
        result = null;
        m_LastError = "Failed to read range '" + m_SheetRange + "' from file '" + file + "'!\n"
                + Utils.throwableToString(e);
    } catch (Exception e) {
        getLogger().log(Level.SEVERE, "Failed to read spreadsheet:", e);
    }

    m_Handler = null;

    return result;
}

From source file:br.com.mapfre.lv.jobmanager.XLSX2CSV.java

License:Apache License

/**
 * Initiates the processing of the XLS workbook file to CSV.
 *
 * @throws IOException/*www. ja  v a  2 s .c o m*/
 * @throws OpenXML4JException
 * @throws ParserConfigurationException
 * @throws SAXException
 */
public void process() throws IOException, OpenXML4JException, ParserConfigurationException, SAXException {

    ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage);
    XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
    StylesTable styles = xssfReader.getStylesTable();
    XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();
    int index = 0;
    while (iter.hasNext()) {
        InputStream stream = iter.next();
        String sheetName = iter.getSheetName();
        this.output.println();
        this.output.println(sheetName + " [index=" + index + "]:");
        processSheet(styles, strings, stream);
        stream.close();
        ++index;
    }
}

From source file:ch.admin.searchreplace.SearchReplaceTerms.java

License:Apache License

private static HashMap<String, String> readSearchReplaceTerms(String input) throws Exception {
    HashMap<String, String> terms = new HashMap<String, String>();

    // The package open is instantaneous, as it should be.
    OPCPackage xlsxPackage = OPCPackage.open(input, PackageAccess.READ);
    ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(xlsxPackage);
    XSSFReader xssfReader = new XSSFReader(xlsxPackage);
    StylesTable styles = xssfReader.getStylesTable();
    XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();

    InputStream stream = iter.next();
    String sheetName = iter.getSheetName();
    System.out.println(sheetName);

    InputSource sheetSource = new InputSource(stream);
    SAXParserFactory saxFactory = SAXParserFactory.newInstance();
    SAXParser saxParser = saxFactory.newSAXParser();
    XMLReader sheetParser = saxParser.getXMLReader();
    ContentHandler handler = new MyXSSFSheetHandler(styles, strings, terms);
    sheetParser.setContentHandler(handler);
    sheetParser.parse(sheetSource);/*from  w  ww. j  ava2  s . com*/

    stream.close();

    return (terms);

}

From source file:ch.admin.searchreplace.XLSX2CSV.java

License:Apache License

/**
 * Initiates the processing of the XLS workbook file to CSV.
 * /*from  w  w  w  .j  av a  2 s  .  c o  m*/
 * @throws IOException
 * @throws OpenXML4JException
 * @throws ParserConfigurationException
 * @throws SAXException
 */
public void process() throws IOException, OpenXML4JException, ParserConfigurationException, SAXException {

    ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage);
    XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
    StylesTable styles = xssfReader.getStylesTable();
    XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();
    int index = 0;
    while (iter.hasNext()) {
        InputStream stream = iter.next();
        String sheetName = iter.getSheetName();
        this.output.println();
        this.output.println(sheetName + " [index=" + index + "]:");
        processSheet(styles, strings, stream);
        stream.close();
        ++index;
        break;
    }
}

From source file:cn.afterturn.easypoi.excel.imports.sax.SaxReadExcel.java

License:Apache License

private <T> List<T> readExcel(OPCPackage opcPackage, Class<?> pojoClass, ImportParams params,
        ISaxRowRead rowRead, IReadHandler handler) {
    try {//from w w w  .j a v  a 2 s .c  o m
        XSSFReader xssfReader = new XSSFReader(opcPackage);
        SharedStringsTable sharedStringsTable = xssfReader.getSharedStringsTable();
        StylesTable stylesTable = xssfReader.getStylesTable();
        if (rowRead == null) {
            rowRead = new SaxRowRead(pojoClass, params, handler);
        }
        XMLReader parser = fetchSheetParser(sharedStringsTable, stylesTable, rowRead);
        Iterator<InputStream> sheets = xssfReader.getSheetsData();
        int sheetIndex = 0;
        while (sheets.hasNext() && sheetIndex < params.getSheetNum() + params.getStartSheetIndex()) {
            if (sheetIndex < params.getStartSheetIndex()) {
                sheets.next();
            } else {
                InputStream sheet = sheets.next();
                InputSource sheetSource = new InputSource(sheet);
                parser.parse(sheetSource);
                sheet.close();
            }
            sheetIndex++;

        }
        if (handler != null) {
            handler.doAfterAll();
        }
        return rowRead.getList();
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
        throw new ExcelImportException("SAX?");
    }
}

From source file:cn.xiaozhi.spider.util.XLSXCovertCSVReader.java

License:Apache License

/**
 * ??? //from  w w  w . j  av a 2 s. c om
 *
 * @throws IOException
 * @throws OpenXML4JException
 * @throws ParserConfigurationException
 * @throws SAXException
 */
public List<String[]> process()
        throws IOException, OpenXML4JException, ParserConfigurationException, SAXException {

    ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage);
    XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
    List<String[]> list = null;
    StylesTable styles = xssfReader.getStylesTable();
    XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();
    int index = 0;
    while (iter.hasNext()) {
        InputStream stream = iter.next();
        String sheetNameTemp = iter.getSheetName();
        if (this.sheetName.equals(sheetNameTemp)) {
            list = processSheet(styles, strings, stream);
            stream.close();
            ++index;
        }
    }
    return list;
}

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

License:Apache License

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

    XMLReader parser = fetchSheetParser(sst);

    Iterator<InputStream> sheets = r.getSheetsData();
    while (sheets.hasNext()) {
        System.out.println("Processing new sheet:\n");
        InputStream sheet = sheets.next();
        InputSource sheetSource = new InputSource(sheet);
        parser.parse(sheetSource);//  w  w w  .j  a  va2 s.  co  m
        sheet.close();
        System.out.println("");
    }
}

From source file:com.bstek.dorado.importer.policy.impl.XLSX2CSV.java

License:Apache License

/**
 * Initiates the processing of the XLS workbook file to CSV.
 * /*from ww  w.  ja  v a  2 s  .  c  om*/
 * @throws IOException
 * @throws OpenXML4JException
 * @throws ParserConfigurationException
 * @throws SAXException
 */
public void process() throws IOException, OpenXML4JException, ParserConfigurationException, SAXException {

    ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage);
    XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
    StylesTable styles = xssfReader.getStylesTable();
    XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();
    int index = 0;
    while (iter.hasNext()) {
        InputStream stream = iter.next();
        String sheetName = iter.getSheetName();
        this.output.println();
        this.output.println(sheetName + " [index=" + index + "]:");
        processSheet(styles, strings, stream);
        stream.close();
        ++index;
    }
    close();
}