添加依赖
<!-- Aspose.Words 依赖 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.5</version>
</dependency>
代码实现
package com.ruoyi.web;
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
/**
* POI 原生实现 Word(docx)正文首行插入文字
*/
public class WordInsertFirstLineByPOI {
public static void main(String[] args) {
String inputWordPath = "C:\\Users\\Mayn\\Downloads\\test.docx"; // 输入docx文件路径
String outputWordPath = "C:\\Users\\Mayn\\Downloads\\out_poi.docx";
String insertText = "这是在Word正文首行插入的文字 - POI原生实现";
try (
FileInputStream fis = new FileInputStream(inputWordPath);
XWPFDocument doc = new XWPFDocument(fis);
FileOutputStream fos = new FileOutputStream(outputWordPath)
) {
// 1. 获取文档所有段落
List<XWPFParagraph> paragraphList = doc.getParagraphs();
if (paragraphList == null || paragraphList.isEmpty()) {
// 若文档为空,直接创建新段落插入文字
XWPFParagraph para = doc.createParagraph();
XWPFRun run = para.createRun();
setRunStyle(run, insertText);
} else {
// 2. 获取第一个段落(正文首段)
XWPFParagraph firstPara = paragraphList.get(0);
// 3. 创建新的Run(文字片段),插入到第一个段落的最前面
XWPFRun firstRun = firstPara.createRun();
// 关键:先写入要插入的文字(会自动放在段落开头)
setRunStyle(firstRun, insertText);
// 若需要插入后加空格分隔原有文字,可添加:firstRun.setText(" ", 1);
}
// 4. 保存文档
doc.write(fos);
System.out.println("首行文字插入成功!输出文档路径:" + outputWordPath);
} catch (Exception e) {
e.printStackTrace();
System.out.println("插入失败:" + e.getMessage());
}
}
/**
* 自定义POI文字样式
*/
private static void setRunStyle(XWPFRun run, String text) {
run.setText(text); // 设置文字内容
run.setFontFamily("宋体"); // 字体
run.setFontSize(14); // 字体大小
run.setBold(true); // 加粗
// run.setColor("000000"); // 字体颜色(16进制RGB)
}
}