2014-09-20 2 views
1

apache poi libs를 사용하여 .xlsx 파일을 열려고하는데 아래 오류가 발생했습니다.아파치 poi 오류 ZIP 파일이 닫혔습니다

다음은 오류가 발생한 부분의 코드입니다. xlsx 파일은 res/raw에 저장됩니다. 오류가 발생하는 이유는 무엇입니까?

  String folderdir = "android.resource://" + getPackageName() + "/" + R.raw.register_template; 
//Workbook wb = WorkbookFactory.create(new File(folderdir)); 
     OPCPackage xlsx = OPCPackage.open(new File(folderdir));//must be .xlsx file type 
     XSSFWorkbook xlsxwb = new XSSFWorkbook(xlsx); 

     xlsx.save(jobno_file); 
     xlsx.close(); 

오류 코드 :이 잘못 정확히 어디에 당신은 말할 수

09-20 16:12:07.039 5694-5694/ E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: , PID: 5694 
    java.lang.IllegalStateException: Could not execute method of the activity 
      at android.view.View$1.onClick(View.java:3823) 
      at android.view.View.performClick(View.java:4438) 
      at android.view.View$PerformClick.run(View.java:18422) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5001) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at android.view.View$1.onClick(View.java:3818) 
            at android.view.View.performClick(View.java:4438) 
            at android.view.View$PerformClick.run(View.java:18422) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5001) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
            at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.IllegalStateException: Zip File is closed 
      at org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45) 
      at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:182) 
      at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:665) 
      at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:253) 
      at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:200) 
      at au.com.prensa.prensa.generalinfo.save_register(generalinfo.java:83) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at android.view.View$1.onClick(View.java:3818) 
            at android.view.View.performClick(View.java:4438) 
            at android.view.View$PerformClick.run(View.java:18422) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5001) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
            at dalvik.system.NativeStart.main(Native Method) 

답변

2

. 파일 시스템의 파일 경로가 아닌 경로에서 File을 사용할 수 없습니다. unzipper가 InputStream을 제공함으로써 호출 될 수 없다면 먼저 res/raw에서 파일 시스템으로 'file'을 복사해야합니다.