2012-06-08 4 views
0

이것은 내 JSP 페이지입니다 ... Excel 파일을 업로드하는 중 ... 다른 작업에 대해 2 개의 Excel 파일을 업로드해야하는 곳 ... 태그 나는 ... struts2 응용 프로그램을 사용하여 Excel에서 파일을 읽는 방법 .tmp로 변환하는 동안

<action name="*Admin" method="{1}" class="controller.AdminAction"> 
      <interceptor-ref name="fileUpload"> 
       <param name="maximumSize">2572864</param> 
       <param name="allowedTypes">application/ms-excel,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</param> 
      </interceptor-ref> 
      <interceptor-ref name="defaultStack"></interceptor-ref> 
      <result name="error">adminPage.jsp</result> 
      <result name="input">adminPage.jsp</result> 
      <result name="success">adminPage.jsp</result> 
     </action> 

다음

액션 클래스입니다 ...
<body> 
<s:actionerror /> 
<s:fielderror /> 
<s:form action="Admin" method="post" enctype="multipart/form-data" theme="simple"> 
<big>Import Batch and Tan Details</big> 
<br> 
<s:file name="uploadToBatch" label="Select a Excel File for Batch import" /> 
<s:submit action="ImportBatchAndTanDetailsAdmin" value="Import" /> 
<br> 
<big>Allocate Batch</big> 
<br> 
<s:file name="uploadToAllocate" label="Select a Excel File for Allocation" /> 
<s:submit action="AllocateAdmin" value="Allocate" onclick=""/> 
</s:form> 
</body> 

다음이 둘의 행동에 대한 내 strut.xml 구성입니다 ... 자기 설명이다

package controller; 

import java.io.File; 
import jxl.Sheet; 
import jxl.Workbook; 
import com.opensymphony.xwork2.ActionSupport; 

@SuppressWarnings("serial") 
public class AdminAction extends ActionSupport { 

    private File uploadToBatch;//The actual file 
    private File uploadToAllocate; 
    private String uploadContentType; //The content type of the file 
    private String uploadFileName; //The uploaded file name 
    AuthorIndexingDAO DAO = new AuthorIndexingDAO(); 

    //getters and setters... 
    public File getUploadToBatch() { 
     return uploadToBatch; 
    } 
    public void setUploadToBatch(File uploadToBatch) { 
     this.uploadToBatch = uploadToBatch; 
    } 
    public File getUploadToAllocate() { 
     return uploadToAllocate; 
    } 
    public void setUploadToAllocate(File uploadToAllocate) { 
     this.uploadToAllocate = uploadToAllocate; 
    } 
    public String getUploadContentType() { 
     return uploadContentType; 
    } 
    public void setUploadContentType(String uploadContentType) { 
     this.uploadContentType = uploadContentType; 
    } 
    public String getUploadFileName() { 
     return uploadFileName; 
    } 
    public void setUploadFileName(String uploadFileName) { 
     this.uploadFileName = uploadFileName; 
    } 



    //ececute method... 


    public String execute(){ 
     return SUCCESS; 
    } 


    //other methods.... 
    public String ImportBatchAndTanDetails(){ 

     try { 

       Workbook w; 

        w = Workbook.getWorkbook(uploadToBatch); 
        Sheet sheet = w.getSheet(0); 
        System.out.println(sheet.getName()); 


        } catch (Exception e) { 
          e.printStackTrace(); 
          System.out.println(e.getMessage()); 
          addActionError(e.getMessage()); 

        return ERROR; 

        } 

     return SUCCESS; 
    } 


public String Allocate(){ 

     try { 

      System.out.println(uploadFileName); 
      System.out.println(uploadToAllocate.getName()); 

       Workbook w; 

        w = Workbook.getWorkbook(uploadToAllocate); 
        Sheet sheet = w.getSheet(0); 
        System.out.println(sheet.getName()); 


        } catch (Exception e) { 
         e.printStackTrace(); 
        return ERROR; 

        } 

     return SUCCESS; 
    } 

} 
0 내가 가져올 동안

내가

null 
upload__6e26fdaa_137cba00800__8000_00000001.tmp 

... 콘솔이를 얻을 w = Workbook.getWorkbook(uploadToAllocate); 근처에 던져 제외하고는 ...

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 controller.AdminAction.Allocate(AdminAction.java:154) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) 
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) 
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:314) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:314) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) 
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
    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) 
+0

이유를 찾았지만 해결책이 아닙니다. 그 이유는 Excel이 적절한 방식으로 만들어지지 않는다는 것입니다. 확장자가'.xls' 인 파일을 생성함으로써 만들어졌습니다. 그러나'MS Excel'을 볼 때 왜 자바 코드를 열 수 없습니까? –

답변

0

나는 이유를 발견했다. 내가 가져온 Excel은 내용을 복사하고 새로운 Excel에 붙여 넣은 다음 저장 한 적절한 방식으로 만들어지지 않습니다. 나중에이 새로운 Excel을 가져 오면 제대로 작동합니다. 당신은 JXL API를 사용했다

0

는 JXL은 .XLS 확장 및 이전을 지원, 그것은 새로운 exensions를 지원하지 않는 등 .XLSX 당신은 대부분의 아마 호환되지 않는 확장자를 사용하는 이유
'jxl.read의 .xlsx'에 있어야합니다. biff.BiffException : OLE 스트림 '예외가 throw됩니다 인식 할 수 없습니다. 확장자가 .xls 인 파일을 사용하거나 jxl api use poi 대신 사용하십시오.