127 apache poi3.11 写 word 中内嵌 表格换行的输出

前言

最近一个 地方的需求

需要再 单元格中 输出带换行回车的内容

然后 找了一下 相关 demo, 基本上是 使用 \r\n 或者 <br> 或者 <w:br/> 来进行处理

但是 测试了一通 之后, 发现 都不行

来自于网上的 demo 不可用

复制代码
/**
 * Test18WordBreakDemo
 *
 * @author Jerry.X.He <970655147@qq.com>
 * @version 1.0
 * @date 2024-05-14 09:07
 */
public class Test18WordBreakDemo {

    public static void main(String[] args) throws Exception {
        XWPFDocument document = new XWPFDocument();
        XWPFTable table = document.createTable();
        XWPFTableRow row = table.getRow(0);
        XWPFTableCell cell = row.createCell();

        String contentWithBreak = "First line<br>Second line";
        // 替换HTML的<br>为对应的Unicode换行符也可以,但推荐使用POI对HTML的支持
        // String contentWithBreak = "First line\nSecond line";

        cell.getParagraphs().get(0).setAlignment(ParagraphAlignment.LEFT);
        cell.getParagraphs().get(0).setSpacingBefore(200);
        cell.getParagraphs().get(0).setSpacingAfter(200);
        cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
        CTShd ctshd = cell.getCTTc().addNewTcPr().addNewShd();
        ctshd.setColor("auto");
        ctshd.setFill("99CCFF");
        cell.getParagraphs().get(0).setStyle("TableContents");

        cell.setText(contentWithBreak);
        cell.getParagraphs().get(0).setStyle("YourCustomStyle");

        FileOutputStream out = new FileOutputStream("Test18WordBreakDemo.docx");
        document.write(out);
        out.close();
    }

}

<br/> 输出结果如下

或者 \r\n 输出如下, 但是 不是期望的效果

正确实现效果的 demo

后面看了一下 正确的结构, 仿写 代码如下

复制代码
/**
 * Test18WordBreakDemo
 *
 * @author Jerry.X.He <970655147@qq.com>
 * @version 1.0
 * @date 2024-05-14 09:07
 */
public class Test18WordBreakDemo {

    public static void main(String[] args) throws Exception {
        // 创建Word文档对象
        XWPFDocument document = new XWPFDocument();

        // 创建表格
        XWPFTable table = document.createTable();

        // 添加行
        XWPFTableRow row = table.getRow(0);

        // 添加单元格
        XWPFTableCell cell = row.createCell();

        setTextInCell(cell, Arrays.asList("第一行", "第二行", "第三行"));

        // 保存文档
        FileOutputStream out = new FileOutputStream("./WordTableExample.docx");
        document.write(out);
        out.close();
    }

    public static void setTextInCell(XWPFTableCell cell, List<String> textList) {
        for (String text : textList) {
            XWPFParagraph paragraph = cell.addParagraph();
            paragraph.setAlignment(ParagraphAlignment.CENTER);
            XWPFRun run = paragraph.createRun();
            run.setText(text);
        }
    }

}

输出结果如下

相关推荐
qq_4221525710 小时前
PDF 转 Word 哪个工具好用?2026 年主流方案对比与选型指南
pdf·word
AI导出鸭PC端12 小时前
智谱清言怎么生成word文档?AI导出鸭终结乱码烦恼
人工智能·ai·c#·word·豆包·ai导出鸭
sbjdhjd14 小时前
04(上)| k8s中的微服务
微服务·云原生·kubernetes·开源·云计算·excel·kubelet
asdzx6716 小时前
使用 Python 精准提取 Word 文档中的文本与表格
python·word
齐齐大魔王16 小时前
Word缩放打印功能
word
SunnyDays101119 小时前
使用 C# 添加、修改和删除 Excel VBA 宏 (无需 Microsoft Office Interop)
c#·excel··vba
OliverH-yishuihan20 小时前
Excel中把一列数据转换成逗号隔开的一行
excel
AI导出鸭PC端2 天前
智谱清言怎样生成word文档——AI导出鸭助您一键转文档
人工智能·ai·word·豆包·deepseek·ai导出鸭
小桥流水---人工智能2 天前
Word/WPS中英文连字符(断字)问题的三种解决方法
word·wps
ken22322 天前
excel表格为什么越存文件越大? libreoffice 有效
excel