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

如何通过NPOI添加键值段落:为XWPFParagraph的多行值设置下划线

实现方案

要在Apache POI的XWPFParagraph中实现你需要的格式,核心是通过XWPFRun控制文本样式和换行,具体步骤和代码如下:

关键逻辑

  1. 先创建文档和段落实例,为"Address"键创建不带下划线的文本运行(Run)
  2. 为地址值创建带下划线的文本运行,每写完一行就添加换行符,实现三行拆分
  3. 下划线样式通过setUnderline(UnderlinePatterns.SINGLE)设置,换行用addCarriageReturn()或addBreak()实现

完整代码示例

import org.apache.poi.xwpf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddressParagraphDemo {
    public static void main(String[] args) throws IOException {
        // 创建文档对象
        XWPFDocument document = new XWPFDocument();
        
        // 创建目标段落
        XWPFParagraph paragraph = document.createParagraph();
        
        // 1. 添加"Address"键文本,无下划线
        XWPFRun keyRun = paragraph.createRun();
        keyRun.setText("Address: ");
        
        // 2. 添加地址值第一行,带下划线
        XWPFRun valueRun1 = paragraph.createRun();
        valueRun1.setUnderline(UnderlinePatterns.SINGLE); // 设置单下划线
        valueRun1.setText("第一行地址内容");
        valueRun1.addCarriageReturn(); // 软回车换行
        
        // 3. 添加地址值第二行,保持下划线
        XWPFRun valueRun2 = paragraph.createRun();
        valueRun2.setUnderline(UnderlinePatterns.SINGLE);
        valueRun2.setText("第二行地址内容");
        valueRun2.addCarriageReturn();
        
        // 4. 添加地址值第三行,保持下划线
        XWPFRun valueRun3 = paragraph.createRun();
        valueRun3.setUnderline(UnderlinePatterns.SINGLE);
        valueRun3.setText("第三行地址内容");
        
        // 写入文件
        try (FileOutputStream out = new FileOutputStream("address_demo.docx")) {
            document.write(out);
        }
        document.close();
    }
}

补充说明

  • 如果需要硬换行(另起一个段落行),可以把addCarriageReturn()换成addBreak(BreakType.TEXT_WRAPPING)
  • 下划线样式支持多种类型,比如DOUBLE(双下划线)、DASH(虚线)等,可根据需求替换UnderlinePatterns枚举值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:05:32