本文介绍了同时开放使用Apache POI .xlsx文件时发生异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在做Android应用程序中,我要打开的.xls和.xlsx文件的进一步落实。如果.xls的一切工作正常,但是当我尝试打开的.xls X文件里它给了我的异常。下面是我的code请帮我解决这些异常

  @覆盖
    保护无效onActivityResult(INT申请code,INT结果code,意图数据){
        super.onActivityResult(要求code,因此code,数据);

        如果(要求code == RESULT_ code和;&安培;结果code == RESULT_OK和放大器;&安培;!空=数据){
            字符串文件名= data.getData()getLastPathSegment()。

            字符串的文件路径= data.getData()getPath()。
            如果(FilePath.endsWith(。XLSX)){
尝试{
                    的FileInputStream文件=新的FileInputStream(新File(文件路径));
                    XSSFWorkbook myWorkBook2 =新XSSFWorkbook(文件);
                    XSSFSheet mySheet2 = myWorkBook2.getSheetAt(0);}
                赶上(FileNotFoundException异常E){
                    // TODO自动生成的catch块
                    e.printStackTrace();
                }赶上(IOException异常E){
                    // TODO自动生成的catch块
                    e.printStackTrace();
                }


                }
 

罐子用它的IAM:

  • 的dom4j-1.6.1.jar
  • 的log4j-1.2.13.jar
  • 在POI-3.9-20121203.jar
  • 在POI-OOXML-3.9-20121203.jar
  • XMLBeans的-2.3.0.jar

logcat的错误

  07-05 14:09:31.654:E / AndroidRuntime(6774):致命异常:主要
07-05 14:09:31.654:E / AndroidRuntime(6774):java.lang.RuntimeException的:不提供结果ResultInfo {谁= NULL,请求= 1,结果= -1,数据= {意图行事= android.intent。 action.GET_CONTENT猫= [android.intent.category.OPENABLE] DAT =文件:/// SD卡/测试的.x​​lsx FLG = 0x3000000 CMP = miyowa.android.microsoft.wlm / com.miyowa.android.framework.ui.miyowaExplorer .MiyowaExplorer(有群众演员)}}到活动{com.example.converter / com.example.converter.Homepage}:org.apache.poi.POIXMLException:java.lang.reflect.InvocationTargetException
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.app.ActivityThread.deliverResults(ActivityThread.java:3142)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.app.ActivityThread.handleSendResult(ActivityThread.java:3185)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.app.ActivityThread.access $ 1100(ActivityThread.java:134)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1281)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.os.Handler.dispatchMessage(Handler.java:99)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.os.Looper.loop(Looper.java:137)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.app.ActivityThread.main(ActivityThread.java:4666)
07-05 14:09:31.654:E / AndroidRuntime(6774):在java.lang.reflect.Method.invokeNative(本机方法)
07-05 14:09:31.654:E / AndroidRuntime(6774):在java.lang.reflect.Method.invoke(Method.java:511)
07-05 14:09:31.654:E / AndroidRuntime(6774):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:809)
07-05 14:09:31.654:E / AndroidRuntime(6774):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
07-05 14:09:31.654:E / AndroidRuntime(6774):在dalvik.system.NativeStart.main(本机方法)
07-05 14:09:31.654:E / AndroidRuntime(6774):org.apache.poi.POIXMLException:产生的原因java.lang.reflect.InvocationTargetException
07-05 14:09:31.654:E / AndroidRuntime(6774):在org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
07-05 14:09:31.654:E / AndroidRuntime(6774):在org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:403)
07-05 14:09:31.654:E / AndroidRuntime(6774):在org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
07-05 14:09:31.654:E / AndroidRuntime(6774):在org.apache.poi.xssf.usermodel.XSSFWorkbook< INIT>(XSSFWorkbook.java:207)
07-05 14:09:31.654:E / AndroidRuntime(6774):在com.example.converter.Homepage.onActivityResult(Homepage.java:358)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.app.Activity.dispatchActivityResult(Activity.java:4694)
07-05 14:09:31.654:E / AndroidRuntime(6774):在android.app.ActivityThread.deliverResults(ActivityThread.java:3138)
07-05 14:09:31.654:E / AndroidRuntime(6774):11 ...更多
07-05 14:09:31.654:E / AndroidRuntime(6774):由:java.lang.reflect.InvocationTargetException
07-05 14:09:31.654:E / AndroidRuntime(6774):在java.lang.reflect.Constructor.constructNative(本机方法)
07-05 14:09:31.654:E / AndroidRuntime(6774):在java.lang.reflect.Constructor.newInstance(Constructor.java:417)
07-05 14:09:31.654:E / AndroidRuntime(6774):在org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
07-05 14:09:31.654:E / AndroidRuntime(6774):17 ...更多
07-05 14:09:31.654:E / AndroidRuntime(6774):由:java.lang.NoClassDefFoundError的:org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument $厂
07-05 14:09:31.654:E / AndroidRuntime(6774):在org.apache.poi.xssf.model.ThemesTable< INIT>(ThemesTable.java:44)
07-05 14:09:31.654:E / AndroidRuntime(6774):20 ...更多
 

解决方案

JS preadsheet 是Java和Android另一个API。它读取并创建.xlsx文件。有没有相关性,只有一个jar文件。

I have been working on an android application in which i have to open .xls and .xlsx file for further implementation. In case of .xls everything is working fine but when i try to open .xls x file it gives me exception. below is my codePlease help me solving these exception

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_code  && resultCode == RESULT_OK && null != data) {
            String FileName = data.getData().getLastPathSegment();

            String FilePath = data.getData().getPath();
            if(FilePath.endsWith(".xlsx")){
try{
                    FileInputStream file = new FileInputStream(new File(FilePath));
                    XSSFWorkbook myWorkBook2 = new XSSFWorkbook(file);
                    XSSFSheet mySheet2 = myWorkBook2.getSheetAt(0);}
                catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


                }

jars which iam using:

  • dom4j-1.6.1.jar
  • log4j-1.2.13.jar
  • poi-3.9-20121203.jar
  • poi-ooxml-3.9-20121203.jar
  • xmlbeans-2.3.0.jar

Logcat error

07-05 14:09:31.654: E/AndroidRuntime(6774): FATAL EXCEPTION: main
07-05 14:09:31.654: E/AndroidRuntime(6774): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=android.intent.action.GET_CONTENT cat=[android.intent.category.OPENABLE] dat=file:///sdcard/test .xlsx flg=0x3000000 cmp=miyowa.android.microsoft.wlm/com.miyowa.android.framework.ui.miyowaExplorer.MiyowaExplorer (has extras) }} to activity {com.example.converter/com.example.converter.Homepage}: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3142)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3185)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.app.ActivityThread.access$1100(ActivityThread.java:134)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.os.Looper.loop(Looper.java:137)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.app.ActivityThread.main(ActivityThread.java:4666)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at java.lang.reflect.Method.invokeNative(Native Method)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at java.lang.reflect.Method.invoke(Method.java:511)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at dalvik.system.NativeStart.main(Native Method)
07-05 14:09:31.654: E/AndroidRuntime(6774): Caused by: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
07-05 14:09:31.654: E/AndroidRuntime(6774):     at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:403)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:207)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at com.example.converter.Homepage.onActivityResult(Homepage.java:358)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.app.Activity.dispatchActivityResult(Activity.java:4694)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3138)
07-05 14:09:31.654: E/AndroidRuntime(6774):     ... 11 more
07-05 14:09:31.654: E/AndroidRuntime(6774): Caused by: java.lang.reflect.InvocationTargetException
07-05 14:09:31.654: E/AndroidRuntime(6774):     at java.lang.reflect.Constructor.constructNative(Native Method)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
07-05 14:09:31.654: E/AndroidRuntime(6774):     at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
07-05 14:09:31.654: E/AndroidRuntime(6774):     ... 17 more
07-05 14:09:31.654: E/AndroidRuntime(6774): Caused by: java.lang.NoClassDefFoundError: org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory
07-05 14:09:31.654: E/AndroidRuntime(6774):     at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:44)
07-05 14:09:31.654: E/AndroidRuntime(6774):     ... 20 more
解决方案

JSpreadsheet is another API for Java and Android. It reads and creates .xlsx file. There are no dependencies, only one jar file.

这篇关于同时开放使用Apache POI .xlsx文件时发生异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-26 16:18
查看更多