Example usage for org.apache.poi.poifs.filesystem POIFSFileSystem POIFSFileSystem

List of usage examples for org.apache.poi.poifs.filesystem POIFSFileSystem POIFSFileSystem

Introduction

In this page you can find the example usage for org.apache.poi.poifs.filesystem POIFSFileSystem POIFSFileSystem.

Prototype


public POIFSFileSystem(InputStream stream) throws IOException 

Source Link

Document

Create a POIFSFileSystem from an InputStream.

Usage

From source file:org.talend.mdm.webapp.browserecords.server.service.UploadService.java

License:Open Source License

private List<WSPutItemWithReport> readExcelFile(FileInputStream fileInputStream)
        throws ServiceException, Exception {
    List<WSPutItemWithReport> wSPutItemWithReportList = new LinkedList<WSPutItemWithReport>();
    String[] importHeader = null;
    Workbook workBook = null;/*from   w w w.j av  a2s .c om*/
    if (FILE_TYPE_EXCEL_SUFFIX.equals(fileType.toLowerCase())) {
        POIFSFileSystem poiFSFile = new POIFSFileSystem(fileInputStream);
        workBook = new HSSFWorkbook(poiFSFile);
    } else {
        workBook = new XSSFWorkbook(fileInputStream);
    }
    Sheet sheet = workBook.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.rowIterator();
    int rowNumber = 0;
    boolean dataLine;
    while (rowIterator.hasNext()) {
        dataLine = false;
        rowNumber++;
        if ((rowNumber - 1) > defaultMaxImportCount) {
            break;
        }
        Row row = rowIterator.next();
        if (rowNumber == 1) {
            importHeader = readHeader(row, null);
            if (importHeader != null && importHeader.length > 0 && entityModel != null) {
                validateKeyFieldExist(importHeader);
            }
            if (headersOnFirstLine) {
                continue;
            }
        }
        multiNodeMap = new HashMap<String, List<Element>>();
        if (importHeader != null) {
            Document document;
            if (isPartialUpdate) {
                Boolean keyContainsEmpty = false;
                String[] keys = new String[entityModel.getKeys().length];
                for (int k = 0; k < entityModel.getKeys().length; k++) {
                    for (String header : importHeader) {
                        if (header.equals(entityModel.getKeys()[k]) && row.getCell(k) != null) {
                            keys[k] = getExcelFieldValue(row.getCell(k));
                            if (keys[k].isEmpty()) {
                                keyContainsEmpty = true;
                            }
                        } else if (header.equals(entityModel.getKeys()[k]) && row.getCell(k) == null) {
                            keyContainsEmpty = true;
                        }
                    }
                }
                if (keyContainsEmpty) {
                    if (isEmptyRecordInExcel(row, importHeader)) {
                        rowNumber--;
                        continue;
                    }
                    throw new UploadException(MESSAGES.getMessage(new Locale(language), "save_error") + " " //$NON-NLS-1$ //$NON-NLS-2$
                            + MESSAGES.getMessage(new Locale(language), "save_row_count", rowNumber) //$NON-NLS-1$
                            + MESSAGES.getMessage(new Locale(language), "error_missing_key_field")); //$NON-NLS-1$
                }
                document = getItemForPartialUpdate(entityModel, keys, rowNumber);
            } else {
                if (isEmptyRecordInExcel(row, importHeader)) {
                    rowNumber--;
                    continue;
                }
                document = XmlUtil.parseDocument(org.talend.mdm.webapp.browserecords.server.util.CommonUtil
                        .getSubXML(typeModel, null, null, language));
            }
            Element currentElement = document.getRootElement();
            for (int i = 0; i < importHeader.length; i++) {
                if (row.getCell(i) != null) {
                    String fieldValue = getExcelFieldValue(row.getCell(i));
                    if (fieldValue != null && !fieldValue.isEmpty()) {
                        dataLine = true;
                        fillFieldValue(currentElement, importHeader[i], fieldValue, row, null);
                    } else {
                        if (isPartialUpdate) {
                            dataLine = true;
                            fillFieldValue(currentElement, importHeader[i], "", row, null); //$NON-NLS-1$
                        }
                    }
                } else {
                    if (isPartialUpdate) {
                        dataLine = true;
                        fillFieldValue(currentElement, importHeader[i], "", row, null); //$NON-NLS-1$
                    }
                }
            }
            if (dataLine) {
                wSPutItemWithReportList.add(buildWSPutItemWithReport(document));
            }
        }
    }
    return wSPutItemWithReportList;
}

From source file:org.talend.mdm.webapp.browserecords.server.service.UploadServiceTest.java

License:Open Source License

public void testGetExcelFieldValue() throws Exception {
    boolean partialUpdateFlag = true;
    String[] keys = { "EntityA/EntityAId" }; //$NON-NLS-1$
    headerVisibleMap = new HashMap<String, Boolean>();
    headerVisibleMap.put("EntityA/EntityAId", true); //$NON-NLS-1$
    headerVisibleMap.put("EntityA/Name", true); //$NON-NLS-1$
    headerVisibleMap.put("EntityA/Age", true); //$NON-NLS-1$
    multipleValueSeparator = "|"; //$NON-NLS-1$
    EntityModel em = getEntityModel("PartialUpdateModel.xsd", "PartialUpdateModel", "EntityA", keys); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    UploadService service = new TestUploadService(em, fileType, partialUpdateFlag, headersOnFirstLine,
            headerVisibleMap, inheritanceNodePathList, multipleValueSeparator, seperator, encoding,
            textDelimiter, language);//from   w  w  w  .  j av  a  2s . c o  m
    String[] importHeader = new String[] { "EntityA/EntityAId" }; //$NON-NLS-1$
    try {
        service.validateKeyFieldExist(importHeader);
    } catch (Exception e) {
        fail("Key Field is not Exist"); //$NON-NLS-1$
    }

    file = new File(this.getClass().getResource("UploadTestModel_PartialUpdate.xls").getFile()); //$NON-NLS-1$
    try {
        FileInputStream fileInputStream = new FileInputStream(file);
        POIFSFileSystem poiFSFile = new POIFSFileSystem(fileInputStream);
        Workbook workBook = new HSSFWorkbook(poiFSFile);
        Sheet sheet = workBook.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.rowIterator();
        int rowNumber = 0;
        while (rowIterator.hasNext()) {
            rowNumber++;
            Row row = rowIterator.next();
            if (rowNumber == 1) {
                continue;
            } else if (rowNumber == 2) {
                assertEquals("22", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("updatedName2", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("2222", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
            } else if (rowNumber == 3) {
                assertEquals("33", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("updatedName3", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("3333", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
            } else if (rowNumber == 4) {
                assertEquals("44", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("updatedName4", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("4444", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
            }
        }
    } catch (Exception exception) {
        fail("get excel file field value failed."); //$NON-NLS-1$
    }
}

From source file:org.talend.mdm.webapp.browserecords.server.service.UploadServiceTest.java

License:Open Source License

public void testImportWithDefaultImportCount() throws Exception {
    fileType = "xls"; //$NON-NLS-1$
    multipleValueSeparator = "|"; //$NON-NLS-1$
    file = new File(this.getClass().getResource("Product_defalutImportCount.xls").getFile()); //$NON-NLS-1$
    String[] keys = { "Product/Id" }; //$NON-NLS-1$
    entityModel = getEntityModel("Product.xsd", "Product", "Product", keys); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    UploadService service = new TestUploadService(entityModel, fileType, isPartialUpdate, headersOnFirstLine,
            headerVisibleMap, inheritanceNodePathList, multipleValueSeparator, seperator, encoding,
            textDelimiter, language);//from w w  w . j  a  v  a2  s.  co  m
    List<WSPutItemWithReport> wsPutItemWithReportList = service.readUploadFile(file);

    FileInputStream fileInputStream = new FileInputStream(file);
    POIFSFileSystem poiFSFile = new POIFSFileSystem(fileInputStream);
    Workbook workBook = new HSSFWorkbook(poiFSFile);
    Sheet sheet = workBook.getSheetAt(0);

    assertEquals(15, sheet.getLastRowNum());
    assertEquals(10, wsPutItemWithReportList.size());

    fileType = "csv"; //$NON-NLS-1$
    file = new File(this.getClass().getResource("Product_defalutImportCount.csv").getFile()); //$NON-NLS-1$
    service = new TestUploadService(entityModel, fileType, isPartialUpdate, headersOnFirstLine,
            headerVisibleMap, inheritanceNodePathList, multipleValueSeparator, seperator, encoding,
            textDelimiter, language);
    wsPutItemWithReportList = service.readUploadFile(file);

    assertEquals(10, wsPutItemWithReportList.size());
}

From source file:org.talend.mdm.webapp.browserecords.server.service.UploadServiceTest.java

License:Open Source License

public void testGetExcelForeignKeyFieldValue() throws Exception {
    String[] keys = { "Product/Id" }; //$NON-NLS-1$
    headerVisibleMap = new HashMap<String, Boolean>();
    headerVisibleMap.put("Product/Id", true); //$NON-NLS-1$
    headerVisibleMap.put("Product/Name", true); //$NON-NLS-1$
    headerVisibleMap.put("Product/Price", true); //$NON-NLS-1$
    headerVisibleMap.put("Product/Description", true); //$NON-NLS-1$
    headerVisibleMap.put("Product/Availability", true); //$NON-NLS-1$
    headerVisibleMap.put("Product/Features/Sizes/Size", true); //$NON-NLS-1$
    headerVisibleMap.put("Product/Features/Colors/Color", true); //$NON-NLS-1$"
    headerVisibleMap.put("Product/Family", true); //$NON-NLS-1$"
    multipleValueSeparator = "|"; //$NON-NLS-1$

    EntityModel entityModel = getEntityModel("Product.xsd", "Product", "Product", keys); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    UploadService service = new TestUploadService(entityModel, fileType, isPartialUpdate, headersOnFirstLine,
            headerVisibleMap, inheritanceNodePathList, multipleValueSeparator, seperator, encoding,
            textDelimiter, language);/*from  ww  w .  j  a v  a 2 s . co m*/
    file = new File(this.getClass().getResource("Product_FK.xls").getFile()); //$NON-NLS-1$
    try {
        FileInputStream fileInputStream = new FileInputStream(file);
        POIFSFileSystem poiFSFile = new POIFSFileSystem(fileInputStream);
        Workbook workBook = new HSSFWorkbook(poiFSFile);
        Sheet sheet = workBook.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.rowIterator();
        int rowNumber = 0;
        while (rowIterator.hasNext()) {
            rowNumber++;
            Row row = rowIterator.next();
            if (rowNumber == 1) {
                continue;
            } else if (rowNumber == 2) {
                assertEquals("Id1", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("Name1", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("111.0", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
                assertEquals("Description1", service.getExcelFieldValue(row.getCell(3)));
                assertEquals("[FK1]", service.transferFieldValue("Product/Family",
                        (service.getExcelFieldValue(row.getCell(7))), "|"));
            } else if (rowNumber == 3) {
                assertEquals("Id2", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("Name2", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("222.0", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
                assertEquals("Description2", service.getExcelFieldValue(row.getCell(3)));
                assertEquals("[FK2]", service.transferFieldValue("Product/Family",
                        (service.getExcelFieldValue(row.getCell(7))), "|"));
            } else if (rowNumber == 4) {
                assertEquals("Id3", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("Name3", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("333.0", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
                assertEquals("Description3", service.getExcelFieldValue(row.getCell(3)));
                assertEquals("[FK3]", service.transferFieldValue("Product/Family",
                        (service.getExcelFieldValue(row.getCell(7))), "|"));
            } else if (rowNumber == 5) {
                assertEquals("Id4", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("Name4", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("444.0", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
                assertEquals("Description4", service.getExcelFieldValue(row.getCell(3)));
                assertEquals("[FK4]", service.transferFieldValue("Product/Family",
                        (service.getExcelFieldValue(row.getCell(7))), "|"));
            } else if (rowNumber == 6) {
                assertEquals("Id5", service.getExcelFieldValue(row.getCell(0))); //$NON-NLS-1$
                assertEquals("Name5", service.getExcelFieldValue(row.getCell(1))); //$NON-NLS-1$
                assertEquals("555.0", service.getExcelFieldValue(row.getCell(2))); //$NON-NLS-1$
                assertEquals("Description5", service.getExcelFieldValue(row.getCell(3)));
                assertEquals("[FK5]", service.transferFieldValue("Product/Family",
                        (service.getExcelFieldValue(row.getCell(7))), "|"));
            }
        }
    } catch (Exception exception) {
        fail("get excel file field value failed."); //$NON-NLS-1$
    }
}

From source file:org.terrier.indexing.MSExcelDocument.java

License:Mozilla Public License

/** Get the reader appropriate for this InputStream. This involves
   converting the Excel document to a stream of words. On failure
   returns null and sets EOD to true, so no terms can be read from
   the object. //from  w ww  .  j  av a  2  s .c  o m
   Uses the property <tt>indexing.excel.maxfilesize.mb</tt> to 
   determine if the file is too big to open
   @param docStream */
@SuppressWarnings("unchecked") //poi version used is for Java 1.4.
protected Reader getReader(InputStream docStream) {

    if (MAXFILESIZE > 0 && (filename == null || new File(filename).length() > MAXFILESIZE)) {

        logger.warn("WARNING: Excel document " + filename + " is too large for POI. Ignoring.");
        EOD = true;
        return null;
    }
    try {
        CharArrayWriter writer = new CharArrayWriter();
        //opening the file system
        POIFSFileSystem fs = new POIFSFileSystem(docStream);
        //opening the work book
        HSSFWorkbook workbook = new HSSFWorkbook(fs);

        for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
            //got the i-th sheet from the work book
            HSSFSheet sheet = workbook.getSheetAt(i);

            Iterator rows = sheet.rowIterator();
            while (rows.hasNext()) {

                HSSFRow row = (HSSFRow) rows.next();
                Iterator cells = row.cellIterator();
                while (cells.hasNext()) {
                    HSSFCell cell = (HSSFCell) cells.next();
                    switch (cell.getCellType()) {
                    case HSSFCell.CELL_TYPE_NUMERIC:
                        String num = Double.toString(cell.getNumericCellValue()).trim();
                        if (num.length() > 0) {
                            writer.write(num + " ");
                        }
                        break;
                    case HSSFCell.CELL_TYPE_STRING:
                        String text = cell.getStringCellValue().trim();
                        if (text.length() > 0) {
                            writer.write(text + " ");
                        }
                        break;
                    }
                }
            }
        }
        return new CharArrayReader(writer.toCharArray());
    } catch (Exception e) {
        logger.warn("WARNING: Problem converting excel document" + e);
        EOD = true;
        return null;
    }
}

From source file:org.terrier.indexing.POIDocument.java

License:Mozilla Public License

protected POITextExtractor getExtractor(String filename, InputStream docStream) throws IOException {
    //Word .doc: 
    if (filename.endsWith(".doc")) {
        return new WordExtractor(docStream);
    }/*from   ww  w . j  a  v a2 s  .  com*/
    //Word .docx:
    if (filename.endsWith(".docx")) {
        return new XWPFWordExtractor(new XWPFDocument(docStream));
    }
    //Powertpoint .ppt: 
    if (filename.endsWith(".ppt")) {
        return new PowerPointExtractor(docStream);
    }
    //Powertpoint .pptx: 
    if (filename.endsWith(".pptx")) {
        return new XSLFPowerPointExtractor(new XMLSlideShow(docStream));
    }
    //Publisher .pub: 
    if (filename.endsWith(".pub")) {
        return new PublisherTextExtractor(docStream);
    }
    //Excel: .xls:
    if (filename.endsWith(".xls")) {
        return new ExcelExtractor(new POIFSFileSystem(docStream));
    }
    //Excel: .xlsx:
    if (filename.endsWith(".xlsx")) {
        return new org.apache.poi.xssf.extractor.XSSFExcelExtractor(new XSSFWorkbook(docStream));
    }
    //Visio: .vsd:
    if (filename.endsWith(".vsd")) {
        return new VisioTextExtractor(docStream);
    }
    return null;
}

From source file:org.testeditor.core.importer.ExcelFileImporter.java

License:Open Source License

/**
 * Returns generated TestData object.//from   w  w  w .  j a  va  2s .c  o m
 * 
 * @param file
 *            excel file for generating TestData.
 * @return TestData
 * @throws ExcelFileImportException
 *             catch oldFileexceptions
 */
@SuppressWarnings("rawtypes")
@Override
public TestData getTestData(File file) throws ExcelFileImportException {

    TestData testData = new TestData();

    InputStream input = null;

    try {
        input = new BufferedInputStream(new FileInputStream(file));

        POIFSFileSystem fs = new POIFSFileSystem(input);
        HSSFWorkbook wb = new HSSFWorkbook(fs);

        HSSFSheet sheet = wb.getSheetAt(0);

        Iterator rows = sheet.rowIterator();

        while (rows.hasNext()) {

            HSSFRow row = (HSSFRow) rows.next();

            TestDataRow testDataRow = getTestDataRow(row);

            if (testDataRow.getList().size() > 0 && !dataRowIsEmpty(testDataRow)) {
                testData.addRow(testDataRow);
            } else {
                break;
            }
        }
    } catch (OldExcelFormatException e) {
        throw new ExcelFileImportException(e);
    } catch (FileNotFoundException e) {
        LOGGER.error("getTestData :: " + e.getMessage());
    } catch (IOException e) {
        LOGGER.error("getTestData" + e.getMessage());
    } finally {
        try {
            if (input != null) {
                input.close();
            }
        } catch (IOException e) {
            LOGGER.error(e);
        }
    }

    return testData;

}

From source file:org.textmining.extraction.excel.ExcelTextExtractor.java

License:Open Source License

public ExcelTextExtractor(InputStream in) throws IOException {
    POIFSFileSystem poifs = new POIFSFileSystem(in);
    DocumentEntry headerProps = (DocumentEntry) poifs.getRoot().getEntry("Workbook");
    DocumentInputStream din = poifs.createDocumentInputStream("Workbook");
    _recordStream = new byte[headerProps.getSize()];

    din.read(_recordStream);// www  . j  a va  2 s. c  o m
    din.close();
}

From source file:org.textmining.extraction.word.WordExtractorFactory.java

License:Open Source License

protected void initWordHeader(InputStream in) throws IOException, PasswordProtectedException {
    _fsys = new POIFSFileSystem(in);
    // load our POIFS document streams.
    DocumentEntry headerProps = (DocumentEntry) _fsys.getRoot().getEntry("WordDocument");
    DocumentInputStream din = _fsys.createDocumentInputStream("WordDocument");
    _header = new byte[headerProps.getSize()];

    din.read(_header);/*from  w  ww  . ja  v a 2  s. co  m*/
    din.close();

}

From source file:org.textmining.extraction.word.WordTextExtractor.java

License:Open Source License

protected void initWordHeader(InputStream in) throws IOException, PasswordProtectedException {
    _fsys = new POIFSFileSystem(in);
    // load our POIFS document streams.
    DocumentEntry headerProps = (DocumentEntry) _fsys.getRoot().getEntry("WordDocument");
    DocumentInputStream din = _fsys.createDocumentInputStream("WordDocument");
    _header = new byte[headerProps.getSize()];

    din.read(_header);/*w ww . j a va2  s  .  c o m*/
    din.close();

    initOptions();

}