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:com.primovision.lutransport.service.ImportMainSheetServiceImpl.java

@Override
public List<LinkedList<Object>> importTollCompanySpecificTollTag(InputStream is,
        LinkedHashMap<String, String> tollCompanySpecificColumns, Long tollCompanyId) throws Exception {
    List<LinkedList<Object>> data = new ArrayList<LinkedList<Object>>();
    try {//from   www.ja v  a 2s  .  c  om
        POIFSFileSystem fs = new POIFSFileSystem(is);

        HSSFWorkbook wb = new HSSFWorkbook(fs);
        Sheet sheet = wb.getSheetAt(0);
        Row titleRow = sheet.getRow(sheet.getFirstRowNum());

        LinkedHashMap<String, Integer> orderedColIndexes = getOrderedColumnIndexes(titleRow,
                tollCompanySpecificColumns);
        Set<Entry<String, Integer>> keySet = orderedColIndexes.entrySet();

        System.out.println("Physical number of rows in Excel = " + sheet.getPhysicalNumberOfRows());
        System.out.println("While reading values from vendor specific Excel Sheet: ");

        Map criterias = new HashMap();
        criterias.put("id", tollCompanyId);
        TollCompany tollCompany = genericDAO.findByCriteria(TollCompany.class, criterias, "name", false).get(0);

        //boolean stopParsing = false;
        for (int i = titleRow.getRowNum() + 1; i <= sheet.getPhysicalNumberOfRows() - 1; i++) {
            Row row = sheet.getRow(i);

            Object firstCellValueObj = getCellValue((HSSFCell) row.getCell(0), true);
            if (firstCellValueObj != null && firstCellValueObj.toString().equalsIgnoreCase("END_OF_DATA")) {
                System.out.println("Received END_OF_DATA");
                break;
            }

            LinkedList<Object> rowObjects = new LinkedList<Object>();

            rowObjects.add(tollCompany.getName());

            /*// TODO: For now, need to get logic 
            String company = StringUtils.substringAfterLast(tollCompany.getName(), " ");
            company = StringUtils.defaultIfEmpty(company, "LU");
            rowObjects.add(company);*/

            rowObjects.add(tollCompany.getCompany().getName());

            Iterator<Entry<String, Integer>> iterator = keySet.iterator();
            while (iterator.hasNext()) {
                Entry<String, Integer> entry = iterator.next();

                if (entry.getValue() == -1) {
                    // corresponding column not found
                    rowObjects.add(StringUtils.EMPTY);
                    continue;
                }

                Object cellValueObj = getCellValue((HSSFCell) row.getCell(entry.getValue()), true);
                if (cellValueObj != null) {
                    System.out.println("Adding " + cellValueObj.toString());
                } else {
                    System.out.println("Adding NULL");
                }
                rowObjects.add(cellValueObj);
            }

            data.add(rowObjects);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return data;
}

From source file:com.progdan.doc2txt.WordExtractor.java

License:Apache License

/**
 * Gets the text from a Word document.//from w  w w  . j a va2s. c  o  m
 *
 * @param in The InputStream representing the Word file.
 */
public String extractText(InputStream in) throws Exception {
    ArrayList text = new ArrayList();
    POIFSFileSystem fsys = new POIFSFileSystem(in);

    // load our POIFS document streams.
    DocumentEntry headerProps = (DocumentEntry) fsys.getRoot().getEntry("WordDocument");
    DocumentInputStream din = fsys.createDocumentInputStream("WordDocument");
    byte[] header = new byte[headerProps.getSize()];

    din.read(header);
    din.close();

    int info = LittleEndian.getShort(header, 0xa);
    if ((info & 0x4) != 0) {
        throw new FastSavedException("Fast-saved files are unsupported at this time");
    }
    if ((info & 0x100) != 0) {
        throw new PasswordProtectedException("This document is password protected");
    }

    // determine the version of Word this document came from.
    int nFib = LittleEndian.getShort(header, 0x2);
    switch (nFib) {
    case 101:
    case 102:
    case 103:
    case 104:
        // this is a Word 6.0 doc send it to the extractor for that version.
        Word6Extractor oldExtractor = new Word6Extractor();
        return oldExtractor.extractText(header);
    }

    //Get the information we need from the header
    boolean useTable1 = (info & 0x200) != 0;

    //get the location of the piece table
    int complexOffset = LittleEndian.getInt(header, 0x1a2);

    // determine which table stream we must use.
    String tableName = null;
    if (useTable1) {
        tableName = "1Table";
    } else {
        tableName = "0Table";
    }

    DocumentEntry table = (DocumentEntry) fsys.getRoot().getEntry(tableName);
    byte[] tableStream = new byte[table.getSize()];

    din = fsys.createDocumentInputStream(tableName);

    din.read(tableStream);
    din.close();

    int chpOffset = LittleEndian.getInt(header, 0xfa);
    int chpSize = LittleEndian.getInt(header, 0xfe);
    int fcMin = LittleEndian.getInt(header, 0x18);
    CHPBinTable cbt = new CHPBinTable(header, tableStream, chpOffset, chpSize, fcMin);

    // load our text pieces and our character runs
    ComplexFileTable cft = new ComplexFileTable(header, tableStream, complexOffset, fcMin);
    TextPieceTable tpt = cft.getTextPieceTable();
    List textPieces = tpt.getTextPieces();

    // make the POIFS objects available for garbage collection
    din = null;
    fsys = null;
    table = null;
    headerProps = null;

    List textRuns = cbt.getTextRuns();
    Iterator runIt = textRuns.iterator();
    Iterator textIt = textPieces.iterator();

    TextPiece currentPiece = (TextPiece) textIt.next();
    int currentTextStart = currentPiece.getStart();
    int currentTextEnd = currentPiece.getEnd();

    WordTextBuffer finalTextBuf = new WordTextBuffer();

    // iterate through all text runs extract the text only if they haven't been
    // deleted
    while (runIt.hasNext()) {
        CHPX chpx = (CHPX) runIt.next();
        boolean deleted = isDeleted(chpx.getGrpprl());
        if (deleted) {
            continue;
        }

        int runStart = chpx.getStart();
        int runEnd = chpx.getEnd();

        while (runStart >= currentTextEnd) {
            currentPiece = (TextPiece) textIt.next();
            currentTextStart = currentPiece.getStart();
            currentTextEnd = currentPiece.getEnd();
        }

        if (runEnd < currentTextEnd) {
            String str = currentPiece.substring(runStart - currentTextStart, runEnd - currentTextStart);
            finalTextBuf.append(str);
        } else if (runEnd > currentTextEnd) {
            while (runEnd > currentTextEnd) {
                String str = currentPiece.substring(runStart - currentTextStart,
                        currentTextEnd - currentTextStart);
                finalTextBuf.append(str);
                if (textIt.hasNext()) {
                    currentPiece = (TextPiece) textIt.next();
                    currentTextStart = currentPiece.getStart();
                    runStart = currentTextStart;
                    currentTextEnd = currentPiece.getEnd();
                } else {
                    return finalTextBuf.toString();
                }
            }
            String str = currentPiece.substring(0, runEnd - currentTextStart);
            finalTextBuf.append(str);
        } else {
            String str = currentPiece.substring(runStart - currentTextStart, runEnd - currentTextStart);
            if (textIt.hasNext()) {
                currentPiece = (TextPiece) textIt.next();
                currentTextStart = currentPiece.getStart();
                currentTextEnd = currentPiece.getEnd();
            }
            finalTextBuf.append(str);
        }
    }
    return finalTextBuf.toString();
}

From source file:com.pureinfo.studio.db.txt2SRM.impl.SchoolSCITxtImportRunner.java

License:Open Source License

/**
 * @param _sString//from   w w w  .ja  va2  s  .c  o m
 * @throws PureException
 * @throws IOException
 * @throws FileNotFoundException
 */
public List check(String _sFileName) throws PureException, FileNotFoundException, IOException {

    POIFSFileSystem fs;
    HSSFSheet m_sheet = null;
    FileInputStream fileInputStream = new FileInputStream(_sFileName);
    String[] m_heads;

    fs = new POIFSFileSystem(fileInputStream);
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    m_sheet = wb.getSheetAt(0);
    HSSFRow row = m_sheet.getRow(0);
    HSSFCell cell;

    // TITLE
    // BY lily
    List list = new ArrayList(row.getLastCellNum());
    for (int i = 0; i < row.getLastCellNum(); i++) {
        cell = row.getCell((short) i);
        if (cell == null) {
            break;
        }
        list.add(cell.getStringCellValue().trim());
    }
    m_heads = new String[list.size()];
    list.toArray(m_heads);
    list.clear();
    fileInputStream.close();
    return checkExcelHead(m_heads);

}

From source file:com.pureinfo.studio.db.xls2srm.impl.ProjectBatchImportRunner.java

License:Open Source License

/**
 * @param _sString/*from w ww.  j  a va2  s . c  o m*/
 * @throws PureException
 * @throws IOException
 * @throws FileNotFoundException
 */
public List check(String _sFileName) throws PureException, FileNotFoundException, IOException {
    POIFSFileSystem fs;
    HSSFSheet m_sheet = null;
    FileInputStream fileInputStream = new FileInputStream(_sFileName);
    String[] m_heads;

    fs = new POIFSFileSystem(fileInputStream);
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    m_sheet = wb.getSheetAt(0);
    HSSFRow row = m_sheet.getRow(0);
    HSSFCell cell;

    // TITLE
    // BY lily
    List list = new ArrayList(row.getLastCellNum());
    for (int i = 0; i < row.getLastCellNum(); i++) {
        cell = row.getCell((short) i);
        if (cell == null) {
            break;
        }
        list.add(cell.getStringCellValue().trim());
    }
    m_heads = new String[list.size()];
    list.toArray(m_heads);
    list.clear();
    fileInputStream.close();
    return checkExcelHead(m_heads);

}

From source file:com.pureinfo.studio.db.xls2srm.impl.XlsObjectsImpl.java

License:Open Source License

public XlsObjectsImpl(String _sFileName) throws PureException {
    POIFSFileSystem fs;//w w w  .  j a v  a 2 s.c  o m
    try {
        fs = new POIFSFileSystem(new FileInputStream(_sFileName));
        HSSFWorkbook wb = new HSSFWorkbook(fs);
        m_sheet = wb.getSheetAt(0);
        HSSFRow row = m_sheet.getRow(0);
        List list = new ArrayList(row.getLastCellNum());
        HSSFCell cell;

        for (int i = 0; i < row.getLastCellNum(); i++) {
            cell = row.getCell((short) i);
            if (cell == null) {
                break;
            }
            list.add(cell.getStringCellValue().trim().toUpperCase());
        }
        m_heads = new String[list.size()];
        list.toArray(m_heads);
        list.clear();
    } catch (Exception ex) {
        throw new PureException(PureException.UNKNOWN, "", ex);
    }

}

From source file:com.qualogy.qafe.service.DocumentServiceImpl.java

License:Apache License

private DocumentOutput handleExcel2003(DocumentParameter parameter) throws IOException {
    DocumentOutput out = null;/*from   w  ww .  j  av  a2  s . com*/
    String uuid = UUIDHelper.generateUUID();
    POIFSFileSystem fs = new POIFSFileSystem(new ByteArrayInputStream(parameter.getData()));
    Workbook workbook = WorkbookFactory.create(fs);
    Sheet sheet = workbook.getSheetAt(0);
    out = handleExcelData(sheet, parameter.isFirstFieldHeader());
    out.setUuid(uuid);
    return out;
}

From source file:com.raisepartner.chartfusion.generator.XLSParser.java

License:Open Source License

public MetaNode parse(File file) throws Exception {
    debug("Parsing '" + file.getAbsolutePath() + "' ...");
    InputStream in = new FileInputStream(file);
    HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(in));
    Map<String, MetaNode> nodeName2MetaNode = new HashMap<String, MetaNode>();
    try {/*www. j  a v a2 s .  c  o m*/
        parseAttribute(wb.getSheetAt(0), nodeName2MetaNode);
        return parseNode(wb.getSheetAt(1), nodeName2MetaNode);
    } catch (Exception e) {
        System.err.println("Error during the parsing of the xls file: '" + file.getAbsolutePath() + "':");
        throw e;
    } finally {
        if (in != null) {
            in.close();
        }
    }
}

From source file:com.ro.ssc.app.client.utils.ExcelReader.java

/**
 *
 * @param file/*from  www  . j a v a  2 s . c o m*/
 * @return
 */
public static Map<String, User> readExcel(File file) {
    Map<String, User> result = new HashMap<>();
    List<Event> events;
    try {
        POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
        HSSFWorkbook wb = new HSSFWorkbook(fs);
        HSSFSheet sheet = wb.getSheetAt(0);
        HSSFRow row;
        HSSFCell cell;

        int rows; // No of rows
        rows = sheet.getPhysicalNumberOfRows();

        int cols = 0; // No of columns
        int tmp;

        // This trick ensures that we get the data properly even if it doesn't start from first few rows
        for (int i = 0; i < 10 || i < rows; i++) {
            row = sheet.getRow(i);
            if (row != null) {
                tmp = sheet.getRow(i).getPhysicalNumberOfCells();
                if (tmp > cols) {
                    cols = tmp;
                }
            }
        }

        DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss EEEE");
        for (int r = 1; r < rows; r++) {
            row = sheet.getRow(r);

            if (row != null) {
                try {
                    String user = WordUtils
                            .capitalizeFully(row.getCell(ExcelEnum.USER_NAME.getAsInteger()).toString().trim());
                    if (row.getCell(ExcelEnum.PASSED.getAsInteger()).toString().trim().equals("1.0")) {
                        if (result.containsKey(user)) {
                            events = result.get(user).getEvents();

                            events.add(new Event(
                                    DateTime.parse(row.getCell(ExcelEnum.TIMESTAMP.getAsInteger()).toString(),
                                            dtf),
                                    row.getCell(ExcelEnum.DESCRIPTION.getAsInteger()).toString(),
                                    row.getCell(ExcelEnum.ADDRESS.getAsInteger()).toString().trim(),
                                    row.getCell(ExcelEnum.PASSED.getAsInteger()).toString().trim()
                                            .equals("1.0")));
                            result.get(user).setEvents(events);

                        } else {
                            events = new ArrayList();
                            events.add(new Event(
                                    DateTime.parse(row.getCell(ExcelEnum.TIMESTAMP.getAsInteger()).toString(),
                                            dtf),
                                    row.getCell(ExcelEnum.DESCRIPTION.getAsInteger()).toString().trim(),
                                    row.getCell(ExcelEnum.ADDRESS.getAsInteger()).toString().trim(),
                                    row.getCell(ExcelEnum.PASSED.getAsInteger()).toString().trim()
                                            .equals("1.0")));
                            String id = row.getCell(ExcelEnum.USER_ID.getAsInteger()).toString().trim();
                            result.put(user, new User(user, id.contains(".") ? id.split("\\.")[0] : id,
                                    row.getCell(ExcelEnum.CARD_NO.getAsInteger()).toString().trim(),
                                    WordUtils.capitalizeFully(
                                            row.getCell(ExcelEnum.DEPARTMENT.getAsInteger()).toString().trim()),
                                    events));
                        }
                    }
                } catch (Exception e) {
                    log.error("Exception" + e.getMessage());
                }
            }
        }
    } catch (Exception ioe) {
        log.error("Exception" + ioe.getMessage());
    }
    return result;
}

From source file:com.runwaysdk.facade.InvokeMethodTest.java

License:Open Source License

public void testInvokeMethodWithByteArrayReturnType() throws Exception {
    BusinessDTO collectionObj1 = clientRequest.newBusiness(collectionType);
    collectionObj1.setValue("aCharacter", "some value");
    clientRequest.createBusiness(collectionObj1);

    BusinessDTO collectionObj2 = clientRequest.newBusiness(collectionType);
    collectionObj2.setValue("aCharacter", "some other value");
    clientRequest.createBusiness(collectionObj2);

    try {/*from w ww  .  j ava  2 s  . c om*/
        Class<?> collectionClass = WebTestGeneratedClassLoader.load(collectionDTO);

        Method getCount = collectionClass.getMethod("getCollectionObjectCount", ClientRequestIF.class);
        Integer recordCount = (Integer) getCount.invoke(null, clientRequest);

        Method getExcelBytes = collectionClass.getMethod("getExcelFile", ClientRequestIF.class);
        Byte[] excelBytes = (Byte[]) getExcelBytes.invoke(null, clientRequest);

        // FileOutputStream fileBytes = new FileOutputStream(new
        // File(ExcelTest.path+"/ValueQueryTest.xls"));

        byte[] bytes = new byte[excelBytes.length];

        for (int i = 0; i < bytes.length; i++) {
            bytes[i] = excelBytes[i];
        }

        // fileBytes.write(bytes);
        //
        // fileBytes.flush();
        // fileBytes.close();

        InputStream stream = new ByteArrayInputStream(bytes);

        POIFSFileSystem fileSystem = new POIFSFileSystem(stream);
        Workbook workbook = new HSSFWorkbook(fileSystem);
        Sheet sheet = workbook.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.rowIterator();

        Integer rowCount = 0;
        while (rowIterator.hasNext()) {
            rowIterator.next();
            rowCount++;
        }

        // Minus 1 for the header row
        rowCount--;

        assertEquals(recordCount, rowCount);
    } finally {
        clientRequest.delete(collectionObj1.getId());
        clientRequest.delete(collectionObj2.getId());
    }
}

From source file:com.runwaysdk.facade.InvokeMethodTest.java

License:Open Source License

public void testInvokeMethodWithInputStreamReturnType() throws Exception {
    BusinessDTO collectionObj1 = clientRequest.newBusiness(collectionType);
    collectionObj1.setValue("aCharacter", "some value");
    clientRequest.createBusiness(collectionObj1);

    BusinessDTO collectionObj2 = clientRequest.newBusiness(collectionType);
    collectionObj2.setValue("aCharacter", "some other value");
    clientRequest.createBusiness(collectionObj2);

    try {//from   w w  w.  j  av a  2 s . c o m
        Class<?> collectionClass = WebTestGeneratedClassLoader.load(collectionDTO);

        Method getCount = collectionClass.getMethod("getCollectionObjectCount", ClientRequestIF.class);
        Integer recordCount = (Integer) getCount.invoke(null, clientRequest);

        Method getExcelBytes = collectionClass.getMethod("getFileStream", ClientRequestIF.class);
        InputStream stream = (InputStream) getExcelBytes.invoke(null, clientRequest);

        POIFSFileSystem fileSystem = new POIFSFileSystem(stream);
        Workbook workbook = new HSSFWorkbook(fileSystem);
        Sheet sheet = workbook.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.rowIterator();

        Integer rowCount = 0;
        while (rowIterator.hasNext()) {
            rowIterator.next();
            rowCount++;
        }

        // Minus 1 for the header row
        rowCount--;

        assertEquals(recordCount, rowCount);
    } finally {
        clientRequest.delete(collectionObj1.getId());
        clientRequest.delete(collectionObj2.getId());
    }
}