2013-05-21 2 views
-1

У меня есть проблема в загрузке файла Excel, мой код Java нижезагрузки файла первенствует исключение

File newFile = new File("C:/sample.xls"); 
int firstColNo = 0; 
int row = 0; 
Cell cell; 
Workbook wb = Workbook.getWorkbook(newFile); 
Sheet sheet = wb.getSheet(0); 
    for (row = 1; row < 1005; row++) { 
     LabelCell labelCell1 = sheet.findLabelCell("COMPOUND_ID"); 
      if (labelCell1 != null) { 
       firstColNo = labelCell1.getColumn(); 
       cell = sheet.getCell(firstColNo, row); 
        if (cell.getContents() != null && cell.getContents().length() > 0) {           System.out.println(cell.getContents()); 
       } else { 
             System.out.println("-"); 
            } 
           } 
          } 

Когда я его отладки я получаю это исключение

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 hello.FileUploadExample.doPost(FileUploadExample.java:63) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

Я использую JXL. jar файл для загрузки файла.

Может ли кто-нибудь помочь мне решить эту проблему?

+0

Возможно дубликат: http://stackoverflow.com/questions/5497681/unable-to-recognize-ole-stream-excepion-while-connecting-to-excel – tostao

+0

Кажется, что загрузка не является проблемой? – sstn

+0

s загрузка не проблема, но wen im отладка этой строки Workbook wb = Workbook.getWorkbook (newFile); я получаю исключение – user2405204

ответ

0

На StackTrace это

at jxl.Workbook.getWorkbook(Workbook.java:198)

, который вызывается в коде на

Workbook wb = Workbook.getWorkbook(newFile); 

Я использовал POI и других первенствует библиотека, не это, но мне кажется, в эта точка может быть FileNotFoundException, преобразованная в jxl.read.biff.BiffException или библиотека не распознает формат входного файла. - потому что вы дали plain.txt, переименованный в .xls

Pls сделать проверку по крайней мере, уровень Java

if(!newFile.isFile()){ 
    return; 
} 

также вы можете проверить длину, чтобы не быть 0 и так далее.

Возможно, this может быть вашим решением.

Надеюсь, это поможет вам найти направление.

Смежные вопросы