我对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);
}
}
我尝试过不同的东西,选项卡被插入。但是,要么我的表没有呈现,要么我的表被附加在选项卡下面。
我尝试将表添加到run对象-> No表中
到段落对象->无表
将段落设置为表的父级,然后在选项卡式段落下面添加表->表。
所以..。很明显我做错了什么。你有解决这个问题的办法吗?我看到文本对象有一个类似于text.setSpace的属性(“保存”);为了保留文本的空间,表对象有类似的地方吗?
提前谢谢。
马提亚斯
发布于 2014-12-12 12:43:04
表是块级元素;它是段落的同级元素,不能是它的后代。
你想要的是tblInd
有关添加该表的帮助,请在Word中创建一个表,然后拖动其左边框。
将生成的docx上传到docx4j webapp,或者使用helper AddIn查看得到的docx4j,并生成相应的docx4j Java代码。
https://stackoverflow.com/questions/27443982
复制