我想用apache poi为docx文档创建一个头,但是我遇到了困难。我没有工作代码显示。我想问一些代码作为出发点。如何使用apache poi在docx文件中设置普通标题?
回答
有一个Apache POI Unit test涵盖了你的情况 - 你正在寻找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多一点关于创建页眉和页脚。
这是不是最好的,所以它可以理想地使用某种灵魂提交补丁,使其更好的(提示提示...!),但它可以作为单元测试表明基于
policy in line'XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();'已经为null。基本上这是我们大多数人的问题。我们如何从文档中获取非NULL策略? –
如果您的文档没有页眉页脚策略,这将是不寻常的,那么您需要先创建一个空页眉页脚。尽管如此,您仍然需要提出这个问题,因为这是OP的一个不同的问题 – Gagravarr
我从头开始创建一个文档。我已经设置了所有段落并将其保存到docx。我正在重新打开该文件以向其添加页眉/页脚。不管我做什么,我的政策总是空的。 –
以前的答案,只是复制和粘贴:
public void test1() throws IOException{
XWPFDocument sampleDoc = new XWPFDocument();
XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
//in an empty document always will be null
if(policy==null){
CTSectPr sectPr = sampleDoc.getDocument().getBody().addNewSectPr();
policy = new XWPFHeaderFooterPolicy(sampleDoc, sectPr);
}
if (policy.getDefaultHeader() == null && policy.getFirstPageHeader() == null
&& policy.getDefaultFooter() == null) {
XWPFHeader headerD = policy.createHeader(policy.DEFAULT);
headerD.getParagraphs().get(0).createRun().setText("Hello Header World!");
}
FileOutputStream out = new FileOutputStream(System.currentTimeMillis()+"_test1_header.docx");
sampleDoc.write(out);
out.close();
sampleDoc.close();
}
- 1. 使用Apache POI更新.docx文件的页面标题
- 2. 如何使用apache POI逐行通过.docx文件迭代
- 3. Apache POI在.docx文件中设置权限区域
- 4. 使用APACHE POI处理docx文件
- 5. 如何在docx文档中的表格之后设置空格(使用apache poi)
- 6. 如何提取DOCX使用Apache POI
- 7. Apache POI - Docx输出问题
- 8. 如何通过apache poi添加背景图像到docx文件?
- 9. 如何通过apache poi更新docx文件的目录(TOC)
- 10. 如何使用Apache POI创建简单的docx文件?
- 11. 如何使用Apache中的Apache POI XWPF将图片添加到.docx文件
- 12. 如何使用apache poi在docx中编写混合文本(正常和下标)?
- 13. 如何使用Apache POI在docx文件中设置运行的背景颜色(一行或一段文字)?
- 14. Apache POI + RichFaces 4 - docx文件名
- 15. apache POI打开docx文件失败
- 16. 如何与Apache POI读取.DOCX在Android
- 17. Apache POI docx - 如何设置页面大小?
- 18. 如何为docx运行apache poi设置粗体
- 19. 如何在使用Apache POI的Word .docx文件中正确生成RSID属性?
- 20. 使用Apache POI的Word文档中的间距和边距设置docx
- 21. 使用Apache POI读取和写入.docx
- 22. 如何使用apache poi从.docx文件中获取图片和表格?
- 23. 使用Apache POI从docx文件读取表格
- 24. Apache POI: - 从DOC文件获取标题
- 25. 如何使用Java Apache POI在Excel中添加标题列?
- 26. 通过使用Apache POI HWPF或XWPF插入一片.doc .docx文件
- 27. 无法使用Apache POI读取多于7页的docx到String使用Apache POI
- 28. 使用Apache POI(Java)替换.docx中的文本
- 29. 使用Apache poi在.doc文件中读取上标和下标?
- 30. 如何使用Apache POI PPT API设置文本字体?
请问你的文件已经有要更改,或者是没有任何标题一个全新的文件还没有一个头(可能是空白)? – Gagravarr
这是我在poi API中生成的空白文件。我只想添加一些标题。 –
你可以调用[document.getHeaderFooterPolicy()](https://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFDocument.html#getHeaderFooterPolicy()),然后从头文件中操作那么,如果需要创建一个新的? – Gagravarr