poi word写入图片

直接使用的百度结果,经过测试可行

1.pom增加jar

        <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>

2.代码

package pers.wwz.study.poiwordimage;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.*;
 
import java.io.*;
 
public class WordExportImage {
    public static void main(String[] args) throws Exception {
        // 模板文件路径
        String templatePath = "template.docx";
        // 输出文件路径
        String outputPath = "output.docx";
        // 图片文件路径
        String imagePath = "image.png";
 
        // 读取模板
        InputStream is = new FileInputStream(templatePath);
        XWPFDocument doc = new XWPFDocument(is);
 
        // 替换文档中的图片占位符
        for (XWPFParagraph para : doc.getParagraphs()) {
            for (XWPFRun run : para.getRuns()) {
                String text = run.getText(0);
                if (text != null && text.contains("IMAGE_PLACEHOLDER")) {
                    run.setText("", 0); // 清除占位符文本
                    run.addPicture(new FileInputStream(imagePath),
                            XWPFDocument.PICTURE_TYPE_PNG, imagePath,
                            Units.toEMU(200), Units.toEMU(200)); // 插入图片
                }
            }
        }
 
        // 输出文件
        FileOutputStream out = new FileOutputStream(outputPath);
        doc.write(out);
        out.close();
        doc.close();
        is.close();
    }
}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Apache POI库来操作Word文档,下面是一个示例代码,演示如何使用POIWord文档中写入文字和图片。 ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.util.IOUtils; public class WordWriter { public static void main(String[] args) throws Exception { // 创建一个新的Word文档对象 XWPFDocument doc = new XWPFDocument(); // 创建一个新的段落 XWPFParagraph para = doc.createParagraph(); // 创建一个新的文本运行 XWPFRun run = para.createRun(); // 设置文本运行的内容 run.setText("Hello World!"); // 添加一个换行符 para.createRun().addBreak(); // 读取图片文件 FileInputStream fis = new FileInputStream(new File("image.jpg")); // 将图片文件转换为二进制数组 byte[] bytes = IOUtils.toByteArray(fis); // 关闭文件输入流 fis.close(); // 创建一个新的段落 para = doc.createParagraph(); // 创建一个新的文本运行 run = para.createRun(); // 插入图片 run.addPicture(bytes, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(300), Units.toEMU(200)); // 保存Word文档 FileOutputStream fos = new FileOutputStream(new File("output.docx")); doc.write(fos); fos.close(); } } ``` 上述代码中,首先创建了一个新的Word文档对象。然后创建了一个新的段落和文本运行,并设置了文本运行的内容。接着添加了一个换行符。接下来,读取了一个图片文件,将其转换为二进制数组,并插入到一个新的段落中。最后,将Word文档保存到文件中。 注意,在实际使用中,需要根据具体情况设置图片的类型和大小。此外,还可以设置图片的位置、对齐方式等属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值