Java poi-ooxml-schemas-3.14 JAR中缺少STSheetViewType类

Java poi-ooxml-schemas-3.14 JAR中缺少STSheetViewType类,java,eclipse,excel,jar,apache-poi,Java,Eclipse,Excel,Jar,Apache Poi,目前,我正在尝试实现的代码中给出的答案 但是poi ooxml模式(版本3.14)JAR文件不包含STSheetViewType类。我深入研究了poi ooxml模式JAR文件(使用7ZIP),发现类文件STSheetViewType$Enum.class存在于以下路径中: org.openxmlformats.schemas.spreadsheetml.x2006.main.STSheetViewType$Enum.class 但是(如果我没有弄错的话)“$”表示一个内部/嵌套类,这意味着ST

目前,我正在尝试实现的代码中给出的答案

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

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

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

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

“STSheetViewType无法解析为变量”

“无法解析类型org.openxmlformats.schemas.spreadsheetml.x2006.main.STSheetViewType。它是从必需的.class文件间接引用的”

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

我发现另一个Jar文件中保存了一个功能似乎相同的类STSheetViewType,但我似乎无法正确导入该类。这样的事情可能吗?或者类文件必须与poi-ooxml-schemas-3.14 JAR文件一起提供


最后,我想了解如何使上述代码与poi-ooxml-schemas-3.14 JAR的当前版本兼容。非常感谢您提供的任何信息或见解。

正如@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:


另请参见@AxelRichter所指出的位于

的常见问题条目,以及常见问题,Apache POI 3.14及更高版本使用了ooxml-schemas-1.3.jar中的类子集。您需要获取该jar文件并将其包含在类路径中,而不是poi-ooxml-schemas-3.14.jar。POI只提供它所需的ooxml模式类。当您开始在自己的代码中直接调用ooxml模式类时,您很可能需要获得包含所有ooxml模式类的完整jar,以避免出现此类问题。您可以从maven central获得jar:


另请参见

中的常见问题条目,以使用
STSheetViewType
如中所述,需要完整的
ooxml-schemas-1.3.jar
。因此,下载
ooxml-schemas-1.3.jar
并将其放入类路径中。但是您可以尝试
STSheetViewType.Enum.forString(“pageLayout”)Enum
是静态的-未测试,因此代码>没有此附加jar。要使用
STSheetViewType
则需要完整的
ooxml-schemas-1.3.jar
,如中所述。因此,下载
ooxml-schemas-1.3.jar
并将其放入类路径中。但是您可以尝试
STSheetViewType.Enum.forString(“pageLayout”)Enum
是静态的,所以没有这个额外的jar-未测试。
CTSheetView view =  sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0);
view.setView(STSheetViewType.PAGE_LAYOUT);