当前位置: 首页 > 知识库问答 >
问题:

使用Apache POI打开.xlsx文件时发生异常

壤驷棋
2023-03-14

我一直在开发一个android应用程序,在这个应用程序中,我必须打开.xls和.xlsx文件以便进一步实现。在.xls的情况下,一切工作正常,但当我尝试打开.xls x文件时,它给了我异常。下面是我的代码,请帮助我解决这些异常

@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();
                } 


                }

我正在使用的JAR:

    null
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

共有1个答案

法镜
2023-03-14

JSpreadsheet是Java和Android的另一个API。它读取并创建.xlsx文件。没有依赖项,只有一个jar文件。

 类似资料:
  • 问题内容: 尝试使用ApachePOI打开Excel时,我得到 我检查了。没有创建这样的文件夹。我正在使用Apache POI 3.6版。 有什么帮助吗?类似的代码在其他工作区中运行良好。在这里不知所措。 码: 问题答案: 您为什么要制作一个非常好的文件,将其包装在中,然后要求POI必须为您缓冲整个文件,以便可以进行随机访问?如果直接将文件直接传递给POI,生活会好很多,因此可以根据需要跳过它!

  • 用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。

  • 问题内容: 尝试使用Apache POI 写入文件时出现以下异常: 看来问题是第二次使用方法write()。使用HSSFWorkbook时,不会出现此问题。 这是代码: 问题答案: 这很可能是一个错误。 https://issues.apache.org/bugzilla/show_bug.cgi?id=49940 我建议您订阅该票以获取有关当前改进/替代方法的通知。 如果找到解决方法,我会通知您

  • 我的问题是为什么我会被抛出错误... java.lang.NoClassDefoundError:org/apache/poi/openxml4j/exceptions/invalidformatexception ...当我在/org/apache/poi/openxml4j/exceptions/的“文件poi-ooxml-3.9-20121203.jar”中看到InvalidFormatEx

  • 我的excel文件中有3张工作表。我正在尝试使用TestNG的@DataProvider注释获取数据。在getTestData()方法中,我传递工作表的名称。通过FileInputStream,读取文件的路径。即使我正在打印文件路径,它也会正确显示。生成路径打印为-C:\Users\Gaurav Pratap Singh\eclipse workspace\SampleTestFrameworkG

  • 问题内容: 考虑这两个python程序: : : 运行。在运行时,启动。两者都将愉快地运行,但是如果当前通过打开文件,则会输出一个空字符串。 我期望会引发异常,告诉我该文件已经打开,但是没有发生,而是文件看起来是空的。为什么会这样?检查它是否已被另一个进程打开的正确方法是什么?可以简单地检查是否返回了空字符串,然后重试直到读取其他内容,或者还有其他更Python化的方法吗? 问题答案: 有关在Py