如何使用最新 Apache POI 5.2.2 的 Low Level CTRPr & CTPPr 类
How to use Low Level CTRPr & CTPPr Classes of latest Apache POI 5.2.2
我正在从 POI 3.14 升级到最新的 POI 5.2.2。目前我在需要更新的 Apace POI 3.14 中使用下面提到的低级别 classes。
i)CTRPr - set/get 运行 粗体、斜体等属性。由 API 的 getBold(), getI()等等。在 POI 3.14 中,但似乎 API 到 set/get 粗体、斜体被更改为处理值列表,如 getBList(),最新 POI 5.2.2 中的 getIList()、setBArray(..)、setIArray(..) 等。任何 运行 在单词 xml 中只有 1 个 RPr & 所以 API 之类的 getBold() 应该足够了。 为什么最新 API 正在使用值列表?如何在代码中使用这些最新的 API 并设置各种 运行 道具?
ii)CTPPr - set/get 内联参数、列表等的参数级 Props。使用 CTLvl level.getPpr() returns CTPpr Class 在 POI 3.14 中,但 CTLvl level.getPpr() returns CTPPrGeneral class 在 POI 5.2.2 中
尽管所有 ParaProps 仍然存在于 CTPpr class 但 为什么返回 CTPPrGeneral class 而不是 CTPpr ?它有什么用?如何在代码中使用最新的 API 并设置各种 Para 道具?
任何包含详细信息的答案都会非常有帮助。
Office Open XML
-schemas classes 是从 XSD
文件生成的,这些文件在 Apache 的 ECMA-376. They are contained in download part 4. The XSD
s contain definitions for the XML
which gets used in Office Open XML
. XMLBeans 中发布,提供了 auto-generate [=17= 的方法] class 来自这个 XSD
s。因此 low-level Office Open XML
-schemas classes of ooxml-schemas
or poi-ooxml-lite
or poi-ooxml-full
do fully translate the given XSD
definitions to Java
.
因此,对于您关于此 Office Open XML
-schemas classes 的变化原因的问题的一般答案是,已发布的 XSD
s 从 2006 年的第一版开始发生了变化到 2012 年的第 4 版。或者使用的 XMLBeans
版本发生了变化并且 XSD
- Java
- 翻译有点不同。
CTRPr
- set/get-methods - 一个元素与列表
在 wml.xsd
的第一版中,CT_RPr
被定义为 EG_RPrContent
的序列,其中 EG_RPrContent
是 EG_RPrBase
的序列 minOccurs="0"
.这意味着 EG_RPrBase
不必发生但可以发生。 EG_RPrBase
然后包含所有可能的 运行 属性的定义。这被解释为 CT_RPr
可能具有 none 或 EG_RPrBase
once 的每个可能的 运行 属性。
现在在 wml.xsd
的第 4 版中,CT_RPr
的定义如上,但 EG_RPrContent
是 EG_RPrBase
的序列,具有 minOccurs="0"
和maxOccurs="unbounded"
。这意味着 EG_RPrBase
不必发生但可以发生,如果发生,则一次或 多次 次。这只能解释为 CT_RPr
可能具有 none 或 EG_RPrBase
的每个可能的 运行 属性,甚至 多次 .这就是现在列表的原因。
CTLvl.getPpr()
returns CTPpr
对比 CTPPrGeneral
class
在 wml.xsd
的第 1 版中,CT_Lvl
元素被定义为具有以下 sub-element:
<xsd:element name="pPr" type="CT_PPr" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Numbering Level Associated Paragraph Properties</xsd:documentation>
</xsd:annotation>
</xsd:element>
甚至没有 CT_PPrGeneral
的定义。所以CTLvl.getPpr()
必须returnCTPpr
.
现在在 wml.xsd
的第 4 版中,CT_Lvl
元素被定义为具有以下 sub-element:
<xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/>
所以CTLvl.getPpr()
现在必须returnCTPPrGeneral
。但是 CTPPrGeneral
提供了 CTPpr
也有的大多数可能性,因为 CT_PPrGeneral
提供了 CT_Ppr
也提供的大多数可能性,除了 CT_ParaRPr
和 CT_SectPr
.
并且由于wml.xsd
的第4版也仍然定义了CT_Ppr
元素,Java
中也需要CTPpr
。所以 CTPPrGeneral
不会替换 Java
中的 CTPpr
因为 CT_PPrGeneral
也不会替换 XSD
.
中的 CT_Ppr
我正在从 POI 3.14 升级到最新的 POI 5.2.2。目前我在需要更新的 Apace POI 3.14 中使用下面提到的低级别 classes。
i)CTRPr - set/get 运行 粗体、斜体等属性。由 API 的 getBold(), getI()等等。在 POI 3.14 中,但似乎 API 到 set/get 粗体、斜体被更改为处理值列表,如 getBList(),最新 POI 5.2.2 中的 getIList()、setBArray(..)、setIArray(..) 等。任何 运行 在单词 xml 中只有 1 个 RPr & 所以 API 之类的 getBold() 应该足够了。 为什么最新 API 正在使用值列表?如何在代码中使用这些最新的 API 并设置各种 运行 道具?
ii)CTPPr - set/get 内联参数、列表等的参数级 Props。使用 CTLvl level.getPpr() returns CTPpr Class 在 POI 3.14 中,但 CTLvl level.getPpr() returns CTPPrGeneral class 在 POI 5.2.2 中 尽管所有 ParaProps 仍然存在于 CTPpr class 但 为什么返回 CTPPrGeneral class 而不是 CTPpr ?它有什么用?如何在代码中使用最新的 API 并设置各种 Para 道具?
任何包含详细信息的答案都会非常有帮助。
Office Open XML
-schemas classes 是从 XSD
文件生成的,这些文件在 Apache 的 ECMA-376. They are contained in download part 4. The XSD
s contain definitions for the XML
which gets used in Office Open XML
. XMLBeans 中发布,提供了 auto-generate [=17= 的方法] class 来自这个 XSD
s。因此 low-level Office Open XML
-schemas classes of ooxml-schemas
or poi-ooxml-lite
or poi-ooxml-full
do fully translate the given XSD
definitions to Java
.
因此,对于您关于此 Office Open XML
-schemas classes 的变化原因的问题的一般答案是,已发布的 XSD
s 从 2006 年的第一版开始发生了变化到 2012 年的第 4 版。或者使用的 XMLBeans
版本发生了变化并且 XSD
- Java
- 翻译有点不同。
CTRPr
- set/get-methods - 一个元素与列表
在 wml.xsd
的第一版中,CT_RPr
被定义为 EG_RPrContent
的序列,其中 EG_RPrContent
是 EG_RPrBase
的序列 minOccurs="0"
.这意味着 EG_RPrBase
不必发生但可以发生。 EG_RPrBase
然后包含所有可能的 运行 属性的定义。这被解释为 CT_RPr
可能具有 none 或 EG_RPrBase
once 的每个可能的 运行 属性。
现在在 wml.xsd
的第 4 版中,CT_RPr
的定义如上,但 EG_RPrContent
是 EG_RPrBase
的序列,具有 minOccurs="0"
和maxOccurs="unbounded"
。这意味着 EG_RPrBase
不必发生但可以发生,如果发生,则一次或 多次 次。这只能解释为 CT_RPr
可能具有 none 或 EG_RPrBase
的每个可能的 运行 属性,甚至 多次 .这就是现在列表的原因。
CTLvl.getPpr()
returns CTPpr
对比 CTPPrGeneral
class
在 wml.xsd
的第 1 版中,CT_Lvl
元素被定义为具有以下 sub-element:
<xsd:element name="pPr" type="CT_PPr" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Numbering Level Associated Paragraph Properties</xsd:documentation>
</xsd:annotation>
</xsd:element>
甚至没有 CT_PPrGeneral
的定义。所以CTLvl.getPpr()
必须returnCTPpr
.
现在在 wml.xsd
的第 4 版中,CT_Lvl
元素被定义为具有以下 sub-element:
<xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/>
所以CTLvl.getPpr()
现在必须returnCTPPrGeneral
。但是 CTPPrGeneral
提供了 CTPpr
也有的大多数可能性,因为 CT_PPrGeneral
提供了 CT_Ppr
也提供的大多数可能性,除了 CT_ParaRPr
和 CT_SectPr
.
并且由于wml.xsd
的第4版也仍然定义了CT_Ppr
元素,Java
中也需要CTPpr
。所以 CTPPrGeneral
不会替换 Java
中的 CTPpr
因为 CT_PPrGeneral
也不会替换 XSD
.
CT_Ppr