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

使用Java和Apache poi从。xls或。xlsx文件读取内容

汪学真
2023-03-14

我在Ubuntu14版本上使用Java1.7版本的STS下运行我的代码,尽管我已经通过添加Apache POI3.9版本和3.2版本的所有JAR测试了两个以下的程序,但我无法解决这个问题。但每次它都给出几乎相同的错误
好心地建议我一些事情,提前谢谢。

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadData {

    public static void main(String a[]) throws FileNotFoundException {

        try {
            File file = new File("Test.xlsx");
            FileInputStream fis = new FileInputStream(file);
            XSSFWorkbook hwb = new XSSFWorkbook(fis);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}

我得到的错误是

线程“main”org.apache.poi.poixmlexception:org.apache.poi.openxml4j.exceptions.invalidformatexception:Package应该包含位于org.apache.poi.util.packageHelper.open(packageHelper.open(packageHelper.java:39)位于org.apache.poi.xssf.usermodel.xssfworkbook. (xssfworkbook.java:273)位于在org.apache.poi.openxml4j.opc.zippackage.getPartSimpl(zippackage.java:201)在org.apache.poi.openxml4j.opc.opcpackage.getParts(OpcPackage.java:684)在org.apache.poi.util.packageHelper.open(PackageHelper.java:37)

下面的代码用于从.xls文件中读取数据

public class ReadData {

    public static void main(String a[]) throws FileNotFoundException {

        try {
            File file = new File("Test.xls");
            FileInputStream fis = new FileInputStream(file);
            HSSFWorkbook hwb = new HSSFWorkbook(fis);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}

上面的代码生成了这个错误

线程“main”org.apache.poi.poifs.filesystem.OfficeXMLFileException中的异常:提供的数据似乎在Office 2007+XML中。您正在调用POI中处理OLE2 Office文档的部分。在org.apache.POI.poifs.storage.headerblock. (headerblock.java:128)在org.apache.POI.poifs.storage.headerblock. (headerblock.java:112)在org.apache.POI.poifs.filesystem.npoifsfilesystem. (npoifsfilesystem.java:300)在book. (HSSFWorkbook.java:381)位于com.axxera.selenium.readdata.main(readdata.java:17)

共有1个答案

璩浩广
2023-03-14

似乎您将XLS保存在XLSX下,反之亦然。

尝试工作簿wb=workbookfactory.create(file inputStream)。它独立于文件扩展名打开文件。

 类似资料:
  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 我需要帮助在阅读xlsx文件,也使用密码解锁,正如上面所做的。

  • 问题内容: 我需要在Java应用程序中读取Excel 2007 XLSX文件。有谁知道一个很好的API来完成这项任务? 问题答案: AFAIK还没有可用的xlsx库。但是有些旧的xls: 一个库是jxls,它内部使用已经提到的POI。 其他2个链接:处理Excel文件,用于读写Excel XLS文档文件的Java库 。

  • 在这个方法中,我使用了xssf类,它用于读取xlsx文件,但我们不能为xlsfile.forxls这样做,我们需要有Hssf类。用户可以在那里导入任何格式。我的要求,是否有任何类可以用来代替xssf和hssf来读取这两种文件。在我的例子中,我使用了xssf。 我有另一种方法,我使用Hssf读取xls文件。但iam只有一个导入按钮用户可以上载任何类型的文件xls、xlsx,但对于导入按钮,我可以有一

  • 因此,我一直在使用Python3.2和OpenPyXL的iterable工作簿,如这里的“优化阅读器”示例所示。 当我尝试使用此策略读取从简单文档中提取的一个或多个文件时,就会出现问题。zip存档(手动和通过python zipfile包)。当我调用我得到“A”和我得到1,当要求打印每个单元格的值时,如下所示: 它打印A1、A2、A3、A4、A5、A6和A7中的值,而不管文件实际有多大。文件本身没

  • 我正在通过ajax-post调用从UI上传excel文件,并试图从支持的Restful服务java代码中读取该文件,但我无法正确打印excel文件内容。文件名和其他属性打印正确。