poi-ooxml-schemas-3.14 JAR

时间:2016-07-15 19:13:03

标签: java eclipse excel jar apache-poi

目前,我正在尝试实施this question:

答案中给出的代码
CTSheetView view =  sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0);
view.setView(STSheetViewType.PAGE_LAYOUT);

但是poi-ooxml-schemas(版本3.14)JAR文件不包含类STSheetViewType。我深入研究了poi-ooxml-schemas JAR文件(使用7ZIP),发现路径中存在类文件STSheetViewType $ Enum.class:

org.openxmlformats.schemas.spreadsheetml.x2006.main.STSheetViewType $ Enum.class

但是(如果我没有弄错的话)' $'表示内部/嵌套类,这意味着STSheetViewType枚举封装在另一个类中。我在旧版本的poi-ooxml-schemas(版本1.1)here中检查了STSheetViewType类的文档,发现类STSheetViewType包含一个内部的Enum STSheetViewType.Enum。

我似乎也从Eclipse中收到的错误中证实了这一点。使用上面显示的代码时出现这些错误:

" STSheetViewType无法解析为变量"

"无法解析类型org.openxmlformats.schemas.spreadsheetml.x2006.main.STSheetViewType。它是从所需的.class文件"

间接引用的

这进一步让我相信STSheetViewType.Enum缺少其父STSheetViewType类文件。但为什么?我检查了新版poi-ooxml-schemas-3.14上的文档,发现更改日志中没有提到STSheetViewType。我已经多次下载了POI的二进制zip文件以确保我的下载没有错误,我甚至下载了源代码并尝试构建JAR,但每次都缺少类文件。

我发现具有看似相同功能的类STSheetViewType保存在另一个Jar文件here中,但我似乎无法正确导入该类。这样的事情甚至可能吗?或者类文件是否必须附带poi-ooxml-schemas-3.14 JAR文件?

最后,我想了解如何使上述代码与当前版本的poi-ooxml-schemas-3.14 JAR兼容。任何有关这方面的信息或见解将不胜感激。

1 个答案:

答案 0 :(得分:2)

正如@AxelRichter和FAQ所指出的,Apache POI 3.14及以上版本使用了ooxml-schemas-1.3.jar中的一个类子集。您需要获取该jar文件并包含在类路径中而不是poi-ooxml-schemas-3.14.jar中。 POI仅提供它所需的ooxml模式类。当您开始在自己的代码中直接调用ooxml架构类时,您很可能必须获得具有所有ooxml架构类的完整jar,以避免出现此类问题。你可以从maven central获得jar:

http://central.maven.org/maven2/org/apache/poi/ooxml-schemas/1.3/

另请参阅http://poi.apache.org/faq.html#faq-N10025

上的常见问题解答条目