2016-05-13 7 views
1

Unter Verwendung von Code, ich bekomme jxl.read.biff.BiffException: Unable to recognize OLE stream. Ich möchte XLS- und XLSX-Formatdateien verwenden. Wie löst man das?Erhalten Jxl.read.biff.BiffException Ausnahme beim Lesen .xls und .xlsx-Format Excel-Dateien

Service.java

@Override 
public boolean facultyDump(String path, HttpSession httpSession) { 
    Session session=sessionFactory.openSession(); 
    session.beginTransaction(); 
    File inputWorkbook = new File(path); 
    Workbook w; 
    try{ 
     w = Workbook.getWorkbook(inputWorkbook); 
     Sheet sheet = w.getSheet(0); 
     for (int i = 1; i < sheet.getRows(); i++) { 
      for (int j = 0; j < sheet.getColumns(); j++) { 
       Cell cell = sheet.getCell(j, i); 
       if (j == 0) { 
        String name= cell.getContents().trim(); 
       } 
      } 
     } 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    }finally{ 
     session.close();sessionFactory.close(); 
    } 
    return false; 
} 

Ausnahme bei Console:

jxl.read.biff.BiffException: Unable to recognize OLE stream 
at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116) 
at jxl.read.biff.File.<init>(File.java:127) 
at jxl.Workbook.getWorkbook(Workbook.java:221) 
at jxl.Workbook.getWorkbook(Workbook.java:198) 
at com.slv.daoimpl.RegistrationDaoImpl.facultyDump(RegistrationDaoImpl.java:2845) 
at com.slv.controller.SuperAdminController.facultyDumpExcel(SuperAdminController.java:327) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
+0

prüfen diese Frage [ „Kann nicht OLE-Stream erkennen“ excepion während in Excel verbinden ] (http://stackoverflow.com/questions/5497681/nicht erkennbare-ole-stream-exception-while-connecting-to-excel) – Rhain

Antwort

0
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 

try{ 
    FileInputStream file = new FileInputStream(new File("C:\\test.xlsx")); 

    //Get the workbook instance for XLS file 
    XSSFWorkbook workbook = new XSSFWorkbook (file); 

    //Get first sheet from the workbook 
    XSSFSheet sheet = workbook.getSheetAt(0); 

    //Get iterator to all the rows in current sheet 
    Iterator<Row> rowIterator = sheet.iterator(); 

    //Get iterator to all cells of current row 
    Iterator<Cell> cellIterator = row.cellIterator(); 

    while(cellIterator.hasNext()) { 
      Cell cell = cellIterator.next();  
      switch(cell.getCellType()) { 
       case Cell.CELL_TYPE_BOOLEAN: 
        System.out.print(cell.getBooleanCellValue() + "\t\t"); 
        break; 
       case Cell.CELL_TYPE_NUMERIC: 
        System.out.print(cell.getNumericCellValue() + "\t\t"); 
        break; 
       case Cell.CELL_TYPE_STRING: 
        System.out.print(cell.getStringCellValue() + "\t\t"); 
        break; 
      } 
     } 
    file.close(); 
}catch(Exception e){ 
    e.printStackTrace(); 
} 
1
@Override 
public boolean facultyDump(String path, HttpSession httpSession) { 
    Session session=sessionFactory.openSession(); 
    session.beginTransaction(); 
    File inputWorkbook = new File(path); 
    try{ 
     FileInputStream fis = new FileInputStream(inputWorkbook); 
     org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(fis); 
     org.apache.poi.ss.usermodel.Sheet mySheet = workbook.getSheetAt(0); 
     Iterator<Row> rowIterator = mySheet.iterator(); 
     while (rowIterator.hasNext()) { 
       Row row = rowIterator.next(); 
       Iterator<Cell> cellIterator = row.cellIterator(); 
       while (cellIterator.hasNext()) { 
        Cell cell = cellIterator.next(); 
        switch (cell.getCellType()) { 
        case Cell.CELL_TYPE_STRING: 
         System.out.print(cell.getStringCellValue() + "\t"); 
         break; 
        case Cell.CELL_TYPE_NUMERIC: 
         System.out.print(cell.getNumericCellValue()+ "\t") ; 
         break; 
        case Cell.CELL_TYPE_BOOLEAN: 
         System.out.print(cell.getBooleanCellValue() + "\t"); 
         break; 
        default : 
        } 
       } 
      } 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    }finally{ 
     session.close();sessionFactory.close(); 
    } 
    return false; 
} 
Verwandte Themen