无法使用docx4j设置单元格宽度

时间:2015-01-09 06:17:32

标签: java doc docx4j

如何设置单元格的宽度?我尝试了通过单元格属性,但它不起作用

private void addTableCell(Tr tableRow, String content, boolean setWidth, int width) {
    Tc tableCell = factory.createTc();

    if (setWidth) {
        setCellWidth(tableCell, width);
    }

    tableCell.getContent().add(
            wordMLPackage.getMainDocumentPart().
                    createParagraphOfText(content));
    tableRow.getContent().add(tableCell);
}

private void setCellWidth(Tc tableCell, int width) {
    TcPr tableCellProperties = new TcPr();
    TblWidth tableWidth = new TblWidth();
    tableWidth.setW(BigInteger.valueOf(width));
    tableCellProperties.setTcW(tableWidth);
    tableCell.setTcPr(tableCellProperties);
}

2 个答案:

答案 0 :(得分:3)

你还应该设置w:tbl / w:tblGrid;进一步了解ecma376/WordML/Tables

正确设置内容的最简单方法是在Word中根据自己的喜好制作表格,然后使用docx4j webapp或Docx4jHelper Word AddIn生成相应的代码。

有关w:tcW的更多信息,请参阅the spec

答案 1 :(得分:1)

您可能需要设置单元格的宽度类型。尝试添加

tableWidth.setType(" DXA&#34);

在setCellWidth函数中调用setTcW()之前。