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

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

Introduction

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

Prototype

public SharedStringsTable getSharedStringsTable() throws IOException, InvalidFormatException 

Source Link

Document

Opens up the Shared Strings Table, parses it, and returns a handy object for working with shared strings.

Usage

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  ww . j a  v  a2  s.  c o  m
 * @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: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);/*ww w .  j ava  2 s .  co m*/
    sheet2.close();
}

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  ww w  .j  a  v  a 2 s. co  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: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   www .jav a 2 s  .  co  m*/
    sheet2.close();
}

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 v  a2s .  c o  m*/
        sheet.close();
        System.out.println("");
    }
}

From source file:com.dhenton9000.excel.ExcelParser.java

public SheetResults parse(InputStream inputStream) throws Exception {

    OPCPackage pkg = OPCPackage.open(inputStream);
    XSSFReader reader = new XSSFReader(pkg);
    this.sst = reader.getSharedStringsTable();

    SAXParserFactory saxFactory = SAXParserFactory.newInstance();
    SAXParser saxParser = saxFactory.newSAXParser();
    XMLReader parser = saxParser.getXMLReader();
    parser.setContentHandler(this);

    // There should only be one sheet
    final Iterator<InputStream> it = reader.getSheetsData();
    final InputStream sheet = it.next();

    final InputSource sheetSource = new InputSource(sheet);
    parser.parse(sheetSource);//from w  w  w  .  j a  v  a  2  s .  c  o m
    sheet.close();

    return getSheetResults();

}

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   w w  w .  j a va  2  s . co m*/
    sheet2.close();
}

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

License:Apache License

public static 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  ww. j a  v  a  2  s .  c o m
        sheet.close();
        System.out.println("");
    }
}

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);/*  ww w .  j  a  v a  2 s  .c om*/
    sheet2.close();
}

From source file:com.qihang.winter.poi.excel.imports.sax.SaxReadExcel.java

License:Apache License

private <T> List<T> readExcel(OPCPackage opcPackage, Class<?> pojoClass,
        com.qihang.winter.poi.excel.entity.ImportParams params, ISaxRowRead rowRead,
        com.qihang.winter.poi.handler.inter.IExcelReadRowHanlder hanlder) {
    try {/*from   w w w.  ja  va  2 s  . c om*/
        XSSFReader xssfReader = new XSSFReader(opcPackage);
        SharedStringsTable sst = xssfReader.getSharedStringsTable();
        if (rowRead == null) {
            rowRead = new com.qihang.winter.poi.excel.imports.sax.parse.SaxRowRead(pojoClass, params, hanlder);
        }
        XMLReader parser = fetchSheetParser(sst, rowRead);
        Iterator<InputStream> sheets = xssfReader.getSheetsData();
        int sheetIndex = 0;
        while (sheets.hasNext() && sheetIndex < params.getSheetNum()) {
            sheetIndex++;
            InputStream sheet = sheets.next();
            InputSource sheetSource = new InputSource(sheet);
            parser.parse(sheetSource);
            sheet.close();
        }
        return rowRead.getList();
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
        throw new com.qihang.winter.poi.exception.excel.ExcelImportException("SAX?");
    }
}