List of usage examples for org.apache.poi.poifs.filesystem POIFSFileSystem POIFSFileSystem
public POIFSFileSystem(InputStream stream) throws IOException
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()); } }