poi-ooxml-schemas-3.14 JAR中缺lessSTSheetViewType类

目前我正试图实现这个问题的答案给出的代码:

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存在于path中:

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

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

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

“STSheetViewType不能parsing为variables”

“typesorg.openxmlformats.schemas.spreadsheet.xml.x2006.main.STSheetViewType无法parsing,它是从所需的.class文件间接引用的”

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

我发现类似STSheetViewType看起来相同的function是在另一个Jar文件中,但我似乎无法正确导入类。 这样的事情甚至可能吗? 或者必须将类文件与poi-ooxml-schemas-3.14 JAR文件一起使用?

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

正如@AxelRichter和FAQ所指出的那样,Apache POI 3.14及更高版本使用了ooxml-schemas-1.3.jar中的一个子类。 您需要获取该jar文件,并将其包含在您的类path中,而不是poi-ooxml-schemas-3.14.jar。 POI只提供它需要的ooxml模式类。 当你开始在你自己的代码中直接调用ooxml模式类时,你很可能必须得到完整的包含所有ooxml模式类的jar来避免这种types的问题。 你可以从maven central得到jar:

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

请参阅http://poi.apache.org/faq.html#faq-N10025上的FAQ条目