【问题标题】:Apache POI - How to draw tables side by side in XWPFDocumentApache POI - 如何在 XWPFDocument 中并排绘制表格
【发布时间】:2014-11-24 13:28:53
【问题描述】:

我正在尝试以编程方式创建一个 Word 文档,但是在创建两个后续 XWPFTable 时,第二个表格被放置在第一个表格的下方。
我希望它们并排显示。

我尝试减小表格的大小,使它们可以容纳一半的页面宽度,但表格的布置没有改变。

有什么方法可以并排显示它们吗? 我怀疑这与文档的 XMLCursor 有关,但我找不到正确移动它的方法。

XWPFDocument document = new XWPFDocument();

XWPFTable table = document.createTable(3,3);
CTTblWidth width = table.getCTTbl().addNewTblPr().addNewTblW();
width.setType(STTblWidth.PCT);
width.setW(BigInteger.valueOf(2500));
table.getCTTbl().getTblPr().addNewJc().setVal(STJc.LEFT);

XWPFTable table2 = document.createTable(2,2);
CTTblWidth width2 = table2.getCTTbl().addNewTblPr().addNewTblW();
width2.setType(STTblWidth.PCT);
width2.setW(BigInteger.valueOf(2400));

table2.getCTTbl().getTblPr().addNewJc().setVal(STJc.RIGHT);

/* write to OutputStream */

感谢您的帮助。

【问题讨论】:

    标签: java apache-poi openxml


    【解决方案1】:

    表格是块级项目,这意味着它将根据其高度和跨度到页面的右边距占用垂直空间,无论它是否使用该空间。因此,没有办法将两个表格并排“流动”,就像没有办法将两个段落并排流动一样。

    有几种方法可以实现这种效果,但在您的情况下,最直接的方法可能是创建一个 1 行 x 3 列的表格,并将左侧表格放在第一个单元格中,将右侧表格放在第三列。中间的列可用于影响两者之间的间距。

    您可能不希望包含表上有任何边框,因为它用于格式化而不是显示。

    【讨论】:

    • 感谢@scanny 的回答,但是我认为一旦修复了页面尺寸高度就可以找到。拥有一个表的解决方法绝对可行,但我更愿意将它们分开。
    • 我想你可能误解了我的回答。我是说您应该将两个表并排嵌套在一个“容器”表中,而不是将两个表合并为一个表。容器表将用于布局目的,而不是包含它自己的直接内容。表格单元格可以包含嵌套表格,也可以包含文本段落。
    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多