Java生成Word并插入图片

在办公自动化和文档处理领域,Java提供了强大的库来生成和操作Word文档。Apache POI是一个流行的Java库,它支持Microsoft Office文档的读写操作。本文将介绍如何使用Java和Apache POI库生成Word文档,并在其中插入图片。

环境准备

首先,确保你的开发环境中已经安装了Java。接下来,需要添加Apache POI库到你的项目中。如果你使用Maven,可以在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version>
</dependency>

创建Word文档

使用Apache POI创建Word文档的基本步骤如下:

  1. 创建XWPFDocument对象,代表一个Word文档。
  2. 创建XWPFParagraph对象,代表文档中的一个段落。
  3. 向段落中添加文本。

以下是创建一个简单Word文档的示例代码:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.FileOutputStream;
import java.io.IOException;

public class WordExample {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        XWPFParagraph paragraph = document.createParagraph();
        paragraph.createRun().setText("Hello, Apache POI!");

        try (FileOutputStream out = new FileOutputStream("example.docx")) {
            document.write(out);
        }
    }
}

插入图片

在Word文档中插入图片,需要使用XWPFRun对象,并调用addPictureData方法。以下是在文档中插入图片的示例代码:

import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xwpf.usermodel.XWPFPicture;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;

import java.io.*;

public class InsertImageExample {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();

        // 读取图片文件
        File imageFile = new File("path/to/your/image.jpg");
        byte[] imageContent = IOUtils.toByteArray(new FileInputStream(imageFile));

        // 创建图片对象
        XWPFPicture picture = run.addPicture(imageContent, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));

        // 保存文档
        try (FileOutputStream out = new FileOutputStream("example_with_image.docx")) {
            document.write(out);
        }
    }
}

使用饼状图展示数据

除了插入图片,Apache POI还支持在Word文档中插入图表。以下是使用Mermaid语法在文档中插入饼状图的示例:

XWPFRun run = paragraph.createRun();
run.addBreak(BreakType.PAGE);
run.addPictureData("mermaid.png", "image/png", "mermaid");

饼状图的数据可以通过Mermaid语法定义:

pie
    "Java" : 45
    "C++" : 25
    "Python" : 20
    "JavaScript" : 10

结语

通过本文的介绍,你应该已经了解了如何使用Java和Apache POI库生成Word文档,并在其中插入图片和饼状图。Apache POI提供了丰富的功能来满足不同的文档处理需求。希望本文能够帮助你在实际工作中更高效地处理Word文档。

请注意,本文仅提供了基本的示例代码,实际应用中可能需要根据具体需求进行调整和优化。同时,Apache POI库的版本可能会不断更新,建议关注其官方文档以获取最新的信息和指导。