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

}

输出结果如下

相关推荐
SiYuanFeng13 小时前
【Word 排版】文本框/文字行间距异常偏大的解决方案
word
醉卧考场君莫笑15 小时前
EXCEL数据分析基础(没有数据统计和数据可视化)
信息可视化·数据分析·excel
belldeep18 小时前
python:markdown + python-docx 将 Markdown 文件格式转为 Word 文档
python·word·markdown·docx
gc_229920 小时前
学习C#调用OpenXml操作word文档的基本用法(16:学习文档脚注类)
word·openxml·脚注
yesyesyoucan20 小时前
智能文件格式转换平台:文本/Excel与CSV的无缝互转解决方案
excel
Fighting_p21 小时前
【预览word文档】使用插件 docx-preview 预览线上 word 文档
开发语言·c#·word
hqyjzsb1 天前
2026年AI证书选择攻略:当“平台绑定”与“能力通用”冲突,如何破局?
大数据·c语言·人工智能·信息可视化·职场和发展·excel·学习方法
牛奔1 天前
Linux 的日志分析命令
linux·运维·服务器·python·excel
薛定谔的猫-菜鸟程序员1 天前
基于Node.js+Pandoc实现Markdown文件无损转换为Word文档的小工具
node.js·word·vim