我的代码是
[...]
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
public class ExcelRead {
public static void main( String [] args ) {
try {
File excel = new File("Book1.xlsx");
FileInputStream fis = new FileInputStream(excel);
XSSFWorkbook book = new XSSFWorkbook(fis);
XSSFSheet sheet = book.getSheetAt(0);
Iterator rows = sheet.rowIterator();
while( rows.hasNext() ) {
HSSFRow row = (HSSFRow) rows.next();
System.out.println("\n");
Iterator cells = row.cellIterator();
while( cells.hasNext() ) {
HSSFCell cell = (HSSFCell) cells.next();
if(HSSFCell.CELL_TYPE_NUMERIC==cell.getCellType())
System.out.print( cell.getNumericCellValue()+" " );
else
if(HSSFCell.CELL_TYPE_STRING==cell.getCellType())
System.out.print( cell.getStringCellValue()+" " );
else
if(HSSFCell.CELL_TYPE_BOOLEAN==cell.getCellType())
System.out.print( cell.getBooleanCellValue()+" " );
else
if(HSSFCell.CELL_TYPE_BLANK==cell.getCellType())
System.out.print( "BLANK " );
else
System.out.print("Unknown cell type");
}
}
} catch ( IOException ex ) {
ex.printStackTrace();
}
}
}
我添加的罐子是
例外的是
Exception in thread "main" java.lang.NoSuchMethodError: javax.xml.stream.XMLEventFactory.newFactory()Ljavax/xml/stream/XMLEventFactory;
at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.<clinit>(PackagePropertiesMarshaller.java:45)
at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161)
at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141)
at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:37)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:87)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:272)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:254)
at com.symplocus.ExcelRead.main(ExcelRead.java:26)
我遇到了与您完全相同的问题,我发现必须使用以下jar文件来解决该程序:
更新的版本会带来麻烦。
这通常表明您以某种方式拖入过时的XML解析器接口,例如,通过一些暂时性依赖关系到旧的xml-api版本或过时的xerces jar,通常不再需要它,因为Java 6提供了所有开箱即用的XML解析功能。
更多细节见本讨论。
poi-ooxml
的最新版本要求您至少使用java 6
。有问题的方法仅在java 6
之后添加。考虑升级您的java
版本。
从官方文件来看,
OOXML 罐子需要一个斯塔克斯实现,但现在 Apache POI 需要 Java 6,这是由 JRE 提供的,不需要额外的斯塔克斯罐。OOXML 罐子过去需要 DOM4J,但现在代码已更改为使用 JAXP,不需要额外的 dom4j 罐子。
*强调我的。
由于问题已编辑,我将指定添加此方法的版本:
爪哇 1.6.0_18
所以在OP的情况下,必须至少使用这个版本。
问题内容: 我的代码是 我添加的罐子是 poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.7.jar xmlbeans-2.3.0.jar dom4j-1.6.1.jar 例外是 问题答案: 最新版本的要求您至少使用。自以来,仅添加了有问题的方法。考虑升级您的版本。 根据官方文档, OOXML jar需要一个stax实现,但是 现在Apache P
我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。
我返回了一个代码,使用jsoup-1.7.3.jar读取网页,它对一些网站有效,但对一些URL显示读取超时错误。 线程“main”java.net.SocketTimeoutException中的异常:java.net.SocketInputStream.socketRead0(本机方法)处java.net.SocketInputStream.Read(SocketInputStream.java
我需要帮助在阅读xlsx文件,也使用密码解锁,正如上面所做的。
问题内容: 我正在使用Apache POI(XSSF API)来读取xlsx文件。当我尝试读取file.i时出现以下错误: 码: 请帮助我解决此问题。 谢谢 问题答案: 该错误告诉您POI找不到OOXML文件的核心部分,在这种情况下为内容类型部分。您的文件不是有效的OOXML文件,更不用说有效的.xlsx文件了。不过,这是一个有效的zip文件,否则您将遇到较早的错误 Excel可以真正加载该文件吗
因此,我一直在使用Python3.2和OpenPyXL的iterable工作簿,如这里的“优化阅读器”示例所示。 当我尝试使用此策略读取从简单文档中提取的一个或多个文件时,就会出现问题。zip存档(手动和通过python zipfile包)。当我调用我得到“A”和我得到1,当要求打印每个单元格的值时,如下所示: 它打印A1、A2、A3、A4、A5、A6和A7中的值,而不管文件实际有多大。文件本身没