在Java中,如果我们希望对Word文档进行预设参数填值并生成新的文档,常用的工具是Apache POI库。Apache POI是一个强大的库,能够处理Microsoft Office格式的文件,包括Word(.doc和.docx文件)。本文将介绍如何使用Apache POI创建一个Word文档,并填入预设的参数以及插入图片。
准备工作
首先,我们需要在项目中引入Apache POI的依赖。如果您正在使用Maven作为构建工具,可以在pom.xml
中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version> <!-- 请使用最新版本 -->
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>5.1.1</version>
</dependency>
</dependencies>
创建Word文档
下面我们将创建一个新的Word文档,并填写预设参数,同时插入一张图片。我们假设需要生成一个包含用户信息的报告。
代码示例
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class WordDocumentGenerator {
public static void main(String[] args) {
// 创建一个Word文档对象
XWPFDocument document = new XWPFDocument();
// 添加标题
XWPFParagraph titleParagraph = document.createParagraph();
XWPFRun titleRun = titleParagraph.createRun();
titleRun.setText("用户信息报告");
titleRun.setBold(true);
titleRun.setFontSize(20);
// 添加用户信息
String userName = "张三";
String userEmail = "zhangsan@example.com";
String userPhone = "12345678901";
XWPFParagraph infoParagraph = document.createParagraph();
XWPFRun infoRun = infoParagraph.createRun();
infoRun.setText("姓名: " + userName);
infoRun.addBreak();
infoRun.setText("电子邮箱: " + userEmail);
infoRun.addBreak();
infoRun.setText("联系电话: " + userPhone);
// 插入图片
try {
InputStream is = WordDocumentGenerator.class.getResourceAsStream("/path/to/image.jpg"); // 请替换为图片路径
if(is != null) {
document.createParagraph(); // 创建一个段落用于图片
XWPFRun run = document.createParagraph().createRun();
run.addPicture(is, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100)); // 设置图片大小
is.close();
}
} catch (Exception e) {
e.printStackTrace();
}
// 保存文档
try (FileOutputStream out = new FileOutputStream("UserReport.docx")) {
document.write(out);
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码解析
- 创建文档:通过
new XWPFDocument()
创建一个新的Word文档对象。 - 添加标题:使用
XWPFParagraph
和XWPFRun
创建标题,并设置其属性(如字体、加粗、字号)。 - 添加用户信息:通过段落和运行对象逐行添加用户信息。
- 插入图片:通过输入流读取图片,并使用
addPicture
方法插入图像。在插入时,可以指定图片的类型和大小(使用Units.toEMU
转换单位)。 - 保存文档:通过
FileOutputStream
将文档写入文件。
总结
以上示例展示了如何使用Apache POI创建一个简单的Word文档,并对其进行参数填值和插入图片。这种方式非常适合于生成报告、通知等文档。使用Apache POI,开发者可以灵活地处理Word文档,满足多样化的需求。希望本文能够帮助您理解如何在Java中操作Word文档。