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

如何解决ApachePOI中的InvocationTargetException

佘修为
2023-03-14

我试图读取xlsx格式的excel文件。但是我得到的结果太大,无效的句柄异常。我把文件实例在一个FileInputStream对象,并试图在XSSFWorkbook中设置该对象。但是我得到了这个例外。

我工作的环境中没有安装Microsoft office,并且有开放式office。我没有在open office中编辑我的xlsx文件。但我在open office中打开了文件,然后尝试运行poi代码。是否因此发生了任何问题?

我给我的代码片段和下面的例外也罐我正在使用

commons-codec-1.10
commons-collections4-4.1
commons-io-2.5
commons-logging-1.2
curvesapi-1.04
ooxml-schemas-1.0
poi-3.17
poi-excelant-3.17
poi-ooxml-3.17
xmlbeans-2.3.0

这是代码从哪里我得到一个异常,

 private void openWorkbook(String fileName) throws IOException {
    FileInputStream excelFile = new FileInputStream(new File(fileName));
    try {

        this.setWorkbook(new XSSFWorkbook(excelFile)); // here the exception is coccuring
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        excelFile.close();
    }
}

我相信setWorkBook方法不能处理工作簿的大小。

我得到的例外是

org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63)
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:580)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:165)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:300)
at com.test.ExcelManager.openWorkbook(ExcelManager.java:26)
at com.test.ExcelManager.<init>(ExcelManager.java:18)
at com.test.ActivityLauncher.main(ActivityLauncher.java:87)
 Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:60)
... 6 more
 Caused by: java.lang.NoSuchMethodError: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableStyle.getTableStyleElementList()Ljava/util/List;
at org.apache.poi.xssf.usermodel.XSSFTableStyle.<init>(XSSFTableStyle.java:87)
at org.apache.poi.xssf.model.StylesTable.readFrom(StylesTable.java:247)
at org.apache.poi.xssf.model.StylesTable.<init>(StylesTable.java:141)
... 12 more
Exception in thread "main" java.lang.NullPointerException
at com.test.ExcelManager.<init>(ExcelManager.java:19)
at com.test.ActivityLauncher.main(ActivityLauncher.java:87)

请帮忙。

共有1个答案

戚俊健
2023-03-14

您可以在这里尝试centic的解决方案,特别是带有POI流式API的部分

 类似资料:
  • 问题内容: 联接操作可以正常工作,但是当我重用df2时,我面临着无法解析的属性错误 错误:org.apache.spark.sql.AnalysisException:已解析的属性ID#426 问题答案: 正如我在评论中提及,它关系到https://issues.apache.org/jira/browse/SPARK-10925,更具体地说https://issues.apache.org/ji

  • 问题内容: 我在应用程序MySQL 5.7中使用,并且具有JSON列。当我尝试运行集成测试时,由于H2数据库无法创建表,因此无法进行测试。这是错误: 这是实体类。 和子类: 并将此转换器插入数据库: 问题答案: 提出问题后,H2添加了JSON支持,版本为1.4.200(2019-10-14)。 但是,您很少需要在数据库中使用JSON数据类型。JSON本质上只是一个可能很长的字符串,因此您可以使用大

  • tensorflow_安装_测试。派克 以下是输出: 我该如何解决这个问题?

  • 我是Django新手,试图在virtualenv中创建一个Django项目来学习,但在上出现以下错误: 回溯(最后一次调用):文件“manage.py”,第21行,main() 文件“manage.py”,第17行,从命令行执行(sys.argv) 文件 “/home/suraj/Documents/my_projects/django_project/venv/lib/python3.6/sit

  • 抱歉打扰你们了。我知道,这个问题已经问了好几遍了。然而,我就是无法解决我的问题。 所以,我一直在尝试创建一个网球计分系统,当你点击两个按钮之一,赢按钮或输按钮时,就会显示出分数。我有一个按钮,他们可以在那里添加他们的名字到计分系统。当一个选手赢了两盘,比赛就结束了。然后我试着印上他们的名字,上面写着,____赢了比赛。当我尝试使用打印它们名称的变量时,我得到的结果是:[objectHTMLButt

  • 我一直试图从AWS S3桶读取一些数据到Databricks。S3桶是开发/团队/用户。我使用的是Scala语句: 我得到以下信息: com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException:用户[user]无权在资源上执行sts: AssumeRole:[资源] 如何解决此错误?我正在运行的数据砖集群有