Java Docx4j-缩进表

Java Docx4j-缩进表,java,docx4j,Java,Docx4j,我对docx4j有一个很好的小问题。我有一个从模板生成的文档(替换邮件合并字段并向其中添加文本) 在这个文档中,我想插入两个表。到目前为止,一切正常,没有问题。 我只想缩进我的表格,在表格前面放一个标签 我使用一个表示docx4j文档的类,并使用以下帮助器方法: public void buildTable(Map<String, String> data, boolean indent) { Tbl table = factory.createTbl();

我对docx4j有一个很好的小问题。我有一个从模板生成的文档(替换邮件合并字段并向其中添加文本) 在这个文档中,我想插入两个表。到目前为止,一切正常,没有问题。 我只想缩进我的表格,在表格前面放一个标签

我使用一个表示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);
    }       
}
公共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代码。

好的,我找到了解决问题的方法,我在表内容前面添加了一个空列。所以它看起来是缩进的,但我确信有一种更优雅的方法来解决这个问题=)