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);
        }
    }

}

输出结果如下

相关推荐
2501_9307077817 小时前
使用C#代码为新创建的 Word 文档创建目录
c#·word
SunnyDays101120 小时前
Java 拆分 Word 文档教程:按页、分页符和分节符拆分
java·word·分页·拆分
copilot中国版2 天前
Word Copilot|一键提取文档关键信息,告别逐字阅读
word·copilot
E-iceblue3 天前
Excel 列转行/行列转换全指南:从 4 种常见解法到 Python 批量自动化
python·excel·python库·spire.xls
Data-Miner3 天前
AI处理数据的脚本复用与逻辑复用有什么区别?哪种方式更能沉淀工作成果
数据分析·excel
福兮说3 天前
在浏览器里写一个“够用就好“的 Excel 公式求值器
前端·javascript·excel·编译原理
慧都小妮子4 天前
标签打印如何减少手工抄数?用Bartender 直连 Excel 批量打印
excel·bartender·条码打印·标签打印软件·数据驱动打印·工业打印机
天人合一peng4 天前
西北工业大学校外访问系统
word
古少侠4 天前
deepseek转word工具怎么选?DS随心转与4种方案对比实测
人工智能·word·powerpoint
SunnyDays10114 天前
Java 设置 Excel 数据验证:整数、日期、文本长度、下拉列表和时间
java·excel·数据验证·下拉列表