如何通过NPOI添加键值段落:为XWPFParagraph的多行值设置下划线
实现方案
要在Apache POI的XWPFParagraph中实现你需要的格式,核心是通过XWPFRun控制文本样式和换行,具体步骤和代码如下:
关键逻辑
- 先创建文档和段落实例,为"Address"键创建不带下划线的文本运行(Run)
- 为地址值创建带下划线的文本运行,每写完一行就添加换行符,实现三行拆分
- 下划线样式通过
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
相关产品推荐
相关产品推荐

