Java Docx4j-缩进表
我对docx4j有一个很好的小问题。我有一个从模板生成的文档(替换邮件合并字段并向其中添加文本) 在这个文档中,我想插入两个表。到目前为止,一切正常,没有问题。 我只想缩进我的表格,在表格前面放一个标签 我使用一个表示docx4j文档的类,并使用以下帮助器方法:Java Docx4j-缩进表,java,docx4j,Java,Docx4j,我对docx4j有一个很好的小问题。我有一个从模板生成的文档(替换邮件合并字段并向其中添加文本) 在这个文档中,我想插入两个表。到目前为止,一切正常,没有问题。 我只想缩进我的表格,在表格前面放一个标签 我使用一个表示docx4j文档的类,并使用以下帮助器方法: public void buildTable(Map<String, String> data, boolean indent) { Tbl table = factory.createTbl();
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);
}
}
公共void构建表(映射数据,布尔缩进){
Tbl table=factory.createTbl();
Tr tableRow=null;
for(字符串键:data.keySet()){
tableRow=factory.createTr();
addTableCell(tableRow,键);
addTableCell(tableRow,data.get(key));
table.getContent().add(tableRow);
}
如果(缩进){
R run=factory.createR();
P para=factory.createP();
R.Tab=factory.createRTab();
run.getContent().add(选项卡);
para.getContent().add(运行);
表2.1(第2段);
文件部分。添加对象(第段);
documentPart.addObject(表);
}否则{
documentPart.addObject(表);
}
}
我尝试了不同的方法,该选项卡已插入。但是要么我的表没有呈现,要么我的表被追加到选项卡下面我试图将表添加到run对象->无表
到段落对象->无表格
将段落设置为表格的父级,然后在选项卡段落下方添加表格->表格
所以。。。显然我做错了什么。你有解决这个问题的办法吗? 我看到文本对象有一个类似text.setSpace(“preserve”)的属性;为了保留文本的空间,表对象是否有类似的内容 提前谢谢
Matthias表是块级元素;它是段落的兄弟,不能是段落的后代 你要的是 要获得添加该表的帮助,请在Word中创建一个表,然后拖动其左边框
将生成的docx上载到docx4j webapp,或使用helper AddIn查看生成的XML,并生成相应的docx4j Java代码。好的,我找到了解决问题的方法,我在表内容前面添加了一个空列。所以它看起来是缩进的,但我确信有一种更优雅的方法来解决这个问题=)