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

使用Java和Apache poi从.xls或.xlsx文件读取内容,java,excel,apache-poi,Java,Excel,Apache Poi,我在STS中运行的代码低于我在Ubuntu14版本上的java 1.7版本,我无法解决这个问题,尽管我测试了以下两个程序,一次添加了ApachePOI3.9版本的所有JAR,第二次添加了3.2版本的JAR。但每次都会产生几乎相同的错误 请给我提些建议 提前谢谢 下面是我从.xlsx文件读取数据的代码 import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadData { public static void

我在STS中运行的代码低于我在Ubuntu14版本上的java 1.7版本,我无法解决这个问题,尽管我测试了以下两个程序,一次添加了ApachePOI3.9版本的所有JAR,第二次添加了3.2版本的JAR。但每次都会产生几乎相同的错误
请给我提些建议 提前谢谢

下面是我从
.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();
        }


    }
}
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.poixmleexception:org.apache.poi.openxml4j.exceptions.InvalidFormatException:包应包含内容类型部分[M1.13] 位于org.apache.poi.util.PackageHelper.open(PackageHelper.java:39) 位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:273) 位于com.axxera.selenium.ReadData.main(ReadData.java:18) 原因:org.apache.poi.openxml4j.exceptions.InvalidFormatException:包应包含内容类型部分[M1.13] 位于org.apache.poi.openxml4j.opc.ZipPackage.getpartsiml(ZipPackage.java:201) 位于org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:684) 位于org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:275) 在org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)

下面是从
.xls
文件读取数据的代码

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


    }
}
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文档的部分。您需要调用POI的不同部分来处理此数据(例如XSSF而不是HSSF) 位于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) 在org.apache.poi.hssf.usermodel.HSSFWorkbook上(HSSFWorkbook.java:400) 在org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:381)
在com.axxera.selenium.ReadData.main(ReadData.java:17)上,您似乎将
xls
保存在
xlsx
下,反之亦然


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

您的代码在poi-3.5-FINAL.jar和.xls文件中运行良好。
但是您应该处理另一个文件扩展名(
.xlsx

您是否导入了所有必需的POI jar?您能列出您导入的jar吗?看看这个问题。。可能是这样的/home/axxera/Jars/ApachePoi/poi-3.13/poi-scratchpad-3.13-20150929.jar/home/axxera/Jars/ApachePoi/poi-3.13/poi-ooxml-schemas-3.13-20150929.jar/home/axxera/Jars/ApachePoi/poi/poi-3.13-3.13/poi-3.13/poi-ooxml-3.13.jar/home/axxera/Jars/ApachePoi/poi-excelant-20150929.9/home/axxera/Jars/ApachePoi/poi-3.13/poi-examples-3.13-20150929.jar/home/axxera/Jars/ApachePoi/poi-3.13/poi-3.13-20150929.jar/home/axxera/Jars/ApachePoi/poi-3.13/lib/log4j-1.2.17.jar/home/axxera/Jars/ApachePoi/poi/poi-3.13/lib/junit-4.12.jar/home/axxera/axxera/poi/lib/poi-3.13/poi-1.1.jar/home/axxera/Jars/ApachePoi/poi-3.13/lib/commons-codec-1.9.jar/home/axxera/Jars/ApachePoi/poi-3.13/ooxml-lib/xmlbeans-2.6.0.jar非常感谢我将.xls文件重命名为.xlsx并复制到其他位置