Docx4j - 缩进表

时间:2014-12-12 12:45:49

标签: java docx4j

我对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

1 个答案:

答案 0 :(得分:1)

表是块级元素;它是段落的兄弟,不能成为它的后代。

你所追求的是tblInd

有关添加它的帮助,请在Word中创建一个表,然后拖动其左边框。

将生成的docx上传到docx4j webapp,或使用帮助程序AddIn查看生成的XML,并生成相应的docx4j Java代码。