You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Apache POI在XWPFDocument中同级插入左表右文?

Apache POI实现表格居左+右侧文本布局的可行方案

你当前的代码之所以达不到预期,是因为默认创建的Word表格是块级元素,会占据整行宽度,后续插入的段落只能排在表格下方。要实现表格居左、文本在右侧的布局,需要将表格设置为浮动环绕模式,让文字可以在表格旁排列。

以下是具体实现代码:

import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;

import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;

public class TableAndTextSideBySide {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();

        // 创建表格
        XWPFTable table = document.createTable();
        XWPFTableRow tableRowOne = table.getRow(0);
        tableRowOne.getCell(0).setText("col one");
        tableRowOne.addNewTableCell().setText("col two");
        tableRowOne.addNewTableCell().setText("col three");

        // 获取表格的属性对象,不存在则创建
        CTTblPr tblPr = table.getCTTbl().getTblPr();
        if (tblPr == null) {
            tblPr = table.getCTTbl().addNewTblPr();
        }

        // 设置表格文字环绕类型为环绕型,允许文字在旁排列
        CTTblWrap tblWrap = tblPr.addNewTblWrap();
        tblWrap.setVal(STTblWrapType.SQUARE);
        // 设置表格对齐方式为左对齐
        CTTblAlign tblAlign = tblPr.addNewTblAlign();
        tblAlign.setVal(STTblAlign.LEFT);

        // 设置表格位置与文字环绕规则:左偏移0,允许文字在两侧环绕
        CTTblPosition tblPosition = tblPr.addNewTblpPr();
        tblPosition.addNewTblpLeft().setVal(0);
        tblPosition.addNewTblpTextWrap().setVal(STTblpTextWrapType.BOTH_SIDES);
        
        // 限制表格宽度,避免占满整行(单位:二十分之一磅)
        CTTblWidth tblWidth = tblPr.addNewTblW();
        tblWidth.setW(BigInteger.valueOf(3000));
        tblWidth.setType(STTblWidth.DXA);

        // 插入右侧文本段落
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText("Abstract: 这里是表格右侧的文本内容,可以换行、设置样式,文字会自动环绕在表格右侧排列");
        run.setFontSize(12);

        // 输出文档
        try (FileOutputStream out = new FileOutputStream("TableWithSideText.docx")) {
            document.write(out);
        }
        document.close();
    }
}

关键说明:

  • CTTblWrap:设置表格的环绕模式,SQUARE类型会让文字围绕表格边缘排列;
  • CTTblPosition:控制表格的位置与文字环绕方向,配合左对齐设置,最终实现文字在表格右侧展示;
  • 表格宽度限制:必须手动指定表格宽度,否则表格会默认占满整行,右侧无法容纳文本;
  • 无需复杂游标操作:设置好表格的环绕属性后,直接创建段落即可自动排列在表格右侧。

如果需要更精确的间距控制,可以通过CTTblpPr的TblpTop、TblpRight等属性调整表格与文字的偏移量。

内容的提问来源于stack exchange,提问作者BR4TO92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:50:17