java - 使用 Java 和 Apache poi 从 .xls 或 .xlsx 文件中读取内容

标签 java excel apache-poi

我在 ubuntu 14 版本上使用 java 1.7 版本在 STS 中运行我的代码,我无法解决这个问题,即使我已经通过一次添加 Apache poi 3.9 版本的所有 jar 和 3.2 版本测试了以下 2 个程序第二次。但每次它都给出几乎相同的错误
请给我一些建议 提前致谢。

以下是我从 .xlsx 读取数据的代码文件

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


    }
}

我得到的错误是

Exception in thread "main" org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13] at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:273) at com.axxera.selenium.ReadData.main(ReadData.java:18) Caused by: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13] at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:201) at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:684) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:275) at 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();
        }


    }
}

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

Exception in thread "main" org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF) at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:128) at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:112) at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:300) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:400) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:381) at com.axxera.selenium.ReadData.main(ReadData.java:17)

最佳答案

似乎您将 xls 保存在 xlsx 下,反之亦然。

尝试 Workbook wb = WorkbookFactory.create(file | inputStream)。它打开独立于文件扩展名的文件。

关于java - 使用 Java 和 Apache poi 从 .xls 或 .xlsx 文件中读取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34286483/

相关文章:

java - 未能实例化 WebApplicationInitializer - Tomcat 启动

java - Tomcat WebService部署异常

regex - Excel VBA : Automation error- Remote procedure call failed

vba - 当单个数据在单元格中时有效地删除行

java - Apache POI 单元格类型错误

java - 为什么这个文件路径不对?

vba - 从电子邮件中提取第 3 行和第 4 行

java - 将 Excel 单元格内容附加到新的 Excel 文件

Java 抛出 java.io.FileNotFoundException :/dir/file. xlsx "Permission denied"

Java线程存储