我对docx4j有一个很好的小问题。我有一个文档,我从模板构建(替换MailMerge字段并向其添加文本) 在本文档中,我想插入两个表。到目前为止,一切正常,这里没问题。 我只是想缩进我的桌子,在它前面放一个标签。
我使用一个代表docx4j文档的类,并使用这些辅助方法:
public void buildTable(Map<String, String> data, boolean indent) {
Tbl table = factory.createTbl();
Tr tableRow = null;
for (String key : data.keySet()) {
tableRow = factory.createTr();
addTableCell(tableRow, key);
addTableCell(tableRow, data.get(key));
table.getContent().add(tableRow);
}
if (indent) {
R run = factory.createR();
P para = factory.createP();
R.Tab tab = factory.createRTab();
run.getContent().add(tab);
para.getContent().add(run);
table.setParent(para);
documentPart.addObject(para);
documentPart.addObject(table);
} else {
documentPart.addObject(table);
}
}
我尝试了不同的东西,插入了标签。但是我的表格没有呈现,或者我的表格附加在标签下方。
我试图将表添加到运行对象 - &gt;没有表
到段落对象 - &gt;没有表
将段落设置为表的父级,然后添加表 - &gt;标签段下方的表格
所以......显然我做错了什么。你有解决这个问题的方法吗? 我看到文本对象有一个像text.setSpace(“preserve”)这样的属性;为了保留文本的空间,表对象有类似的东西吗?
提前致谢。
的Matthias
答案 0 :(得分:1)
表是块级元素;它是段落的兄弟,不能成为它的后代。
你所追求的是tblInd
有关添加它的帮助,请在Word中创建一个表,然后拖动其左边框。
将生成的docx上传到docx4j webapp,或使用帮助程序AddIn查看生成的XML,并生成相应的docx4j Java代码。