Java poi-ooxml-schemas-3.14 JAR中缺少STSheetViewType类
目前,我正在尝试实现的代码中给出的答案 但是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文件一起提供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-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);