使用Java和Apache poi从.xls或.xlsx文件读取内容
我在STS中运行的代码低于我在Ubuntu14版本上的java 1.7版本,我无法解决这个问题,尽管我测试了以下两个程序,一次添加了ApachePOI3.9版本的所有JAR,第二次添加了3.2版本的JAR。但每次都会产生几乎相同的错误使用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
请给我提些建议 提前谢谢 下面是我从
.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并复制到其他位置