当前位置: 首页 > 面试题库 >

如何使用Apache POI在docx文件中设置普通标头?

冀子石
2023-03-14
问题内容

我想使用apache poi为docx文档创建标题,但遇到了困难。我没有可显示的工作代码。我想请一些代码作为起点。


问题答案:

有一个Apache
POI单元测试
可以涵盖您的实际情况-
您正在寻找TestXWPFHeader#testSetHeader()。它涵盖了从没有设置页眉或页脚的文档开始,然后添加它们

您的代码基本上是这样的:

XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
if (policy.getDefaultHeader() == null && policy.getFirstPageHeader() == null
       && policy.getDefaultFooter() == null) {
   // Need to create some new headers
   // The easy way, gives a single empty paragraph
   XWPFHeader headerD = policy.createHeader(policy.DEFAULT);
   headerD.getParagraphs(0).createRun().setText("Hello Header World!");

   // Or the full control way
    CTP ctP1 = CTP.Factory.newInstance();
    CTR ctR1 = ctP1.addNewR();
    CTText t = ctR1.addNewT();
    t.setStringValue("Paragraph in header");

    XWPFParagraph p1 = new XWPFParagraph(ctP1, sampleDoc);
    XWPFParagraph[] pars = new XWPFParagraph[1];
    pars[0] = p1;

    policy.createHeader(policy.FIRST, pars);
} else {
   // Already has a header, change it
}

有关创建页眉和页脚的更多信息,请参见XWPFHeaderFooterPolicy
JavaDocs

它不是最好的,因此理想情况下它可以使用某种形式的灵魂提交补丁以使其更美观(提示……!),但是它可以如单元测试所示



 类似资料:
  • 有人知道如何改变页面大小(从字母到A4)为(docx)吗? 我找不到任何像XSSFDocument(xlsx)中那样的打印设置。 谢谢你的帮助。

  • 我无法使用ApachePOI删除docx文件中的所有注释。有没有其他方法可以使用docx4j api删除注释?

  • 我正在尝试创建一个包含多列的word文档。这样做(而不是使用表)的原因是,数据将跨越多个页面,在添加到新页面之前,我只能用列填充整个页面。 可以用ApachePOI实现吗?谢谢

  • 我使用eclipse和ant构建系统。在我的项目根中,我有一个project.Properties文件,其中包含Proguard.config设置。此设置在sdk示例中表示为 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

  • 我说的“许可区域”是什么意思?您可以通过将整个文档设置为只读来保护它,但可以保留可以编辑的区域。 我试图在一些文档。据我所知,POI库中没有API可以实现这一点——我唯一发现的是类中与permisson相关的方法,但我不知道如何使用它。我的目标是在权限区域中包含一个或多个,以生成如下内容: 我该怎么做?

  • 现在我有一个docx文件,我加载到 我可以看到存储在style中的不同样式的当前字体大小。通过做xml 我想用poi更新字体大小,所以我试了一下 但是,在完成上述代码后,如果我使用第一段代码检查文档的字体大小(object),字体大小仍然是原始值,而不是我想要设置的12。 对于如何解决这个问题,有什么建议吗?