如何在docx文档中创建复选框并输入文本字段?

时间:2019-08-21 10:40:08

标签: java apache-poi apache-poi-4

我是apache poi的新手,有人可以在docx文档中创建复选框和可填充字段(纯文本,富文本)吗?我看到了docx的xml表示形式,我认为这是元素描述复选框

<w:fldChar w:fldCharType="begin">
          <w:ffData>
            <w:name w:val="Check59"/>
            <w:enabled/>
            <w:calcOnExit w:val="0"/>
            <w:checkBox>
              <w:sizeAuto/>
              <w:default w:val="0"/>
            </w:checkBox>
          </w:ffData>
        </w:fldChar>
      </w:r>
      <w:bookmarkStart w:id="6" w:name="Check59"/>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
        </w:rPr>
        <w:instrText xml:space="preserve">FORMCHECKBOX</w:instrText>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
        </w:rPr>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
        </w:rPr>
        <w:fldChar w:fldCharType="end"/>
      </w:r>

并且该xml元素描述了输入文本:

<w:r>
        <w:rPr>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:fldChar w:fldCharType="begin">
          <w:ffData>
            <w:name w:val="Text1"/>
            <w:enabled/>
            <w:calcOnExit w:val="0"/>
            <w:textInput/>
          </w:ffData>
        </w:fldChar>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:instrText xml:space="preserve">FORMTEXT</w:instrText>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:fldChar w:fldCharType="separate"/>
      </w:r>
      <w:r>
        <w:rPr>
          <w:noProof/>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:t> </w:t>
      </w:r>
      <w:r>
        <w:rPr>
          <w:noProof/>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:t> </w:t>
      </w:r>
      <w:r>
        <w:rPr>
          <w:noProof/>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:t> </w:t>
      </w:r>
      <w:r>
        <w:rPr>
          <w:noProof/>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:t> </w:t>
      </w:r>
      <w:r>
        <w:rPr>
          <w:noProof/>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:t> </w:t>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:fldChar w:fldCharType="end"/>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
          <w:u w:val="single"/>
        </w:rPr>
        <w:tab/>
      </w:r>
      <w:r>
        <w:rPr>
          <w:sz w:val="20"/>
        </w:rPr>
        <w:t xml:space="preserve">,“Seller” whether one or more, and</w:t>
      </w:r>
    </w:p>

但是从apache poi那里获得还是创建相同的东西?

1 个答案:

答案 0 :(得分:0)

据您所知XML Office Open XML文档中需要的Word,您也可以使用apache poi创建它。 Apache poi基于ooxml-schemas,它们是根据Java的{​​{1}}模式定义创建的XML类。这就是为什么这些架构定义中描述的每个Office Open XML元素都有类。

不幸的是,没有可用的关于ooxml模式公开的任何文档。因此,我们需要下载ooxml-schemas的源代码,然后以XML的形式进行获取以获得描述类和方法的API文档。

然后我们找到javadoc类,它们是org.openxmlformats.schemas.wordprocessingml.x2006.main.*的文字处理部分。

注意Office Open XML版本ooxml-schemas1.4或更高版本一起使用。对于旧版本apache poi 4.0.0,需要版本ooxml-schemas

要在1.3中插入表单字段,我们需要WordInterface CTFldCharInterface STFldCharType

示例代码:

Interface CTString