gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:54:28 39 4
gpt4 key购买 nike

我在 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/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com