我不是一个资深高手,只想描述普通人在项目中真正常见的问题,以及我的一些经验!
上一篇文章中讲了针对word的一些简单的操作,如文字添加、表格添加,样式田间、以及合并单元格,对列举的基础概念做基础解释,详细请参考另外一篇文章,链接如下 blog.csdn.net/qq_19887735… 可以关注我的专栏《apache poi的那些事情》会持续更新poi的相关内容
这篇文章主要介绍一下word插入之图片,话不多说,直接上操作
1.列举概念(和上一篇一样)
XWPFDocument: 代表一个docx文档,其可以用来读docx文档,也可以用来写docx文档
XWPFParagraph: 代表文档、表格、标题等种的段落,由多个XWPFRun组成
XWPFRun: 代表具有同样风格的一段文本
XWPFTable: 代表一个表格
XWPFTableRow: 代表表格的一行
XWPFTableCell: 代表表格的一个单元格
XWPFPicture: 代表图片
2.基础依赖(和上一篇一样)
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>3.1.0</version>
</dependency>
3.插入图片,简单demo讲解
1.插入图片:利用如下代码创建文档,并直接将文本写入到空的word中
package com.example.poidemo.word;
import cn.hutool.core.io.resource.ClassPathResource;
import cn.hutool.core.io.resource.ResourceUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
/**
* @Description: 生成图片插入文档
* @author: flynn
* @date: 2024年09月10日 19:47
*/
public class InsertPicIntoBlankWord {
public static void main(String[] args) throws IOException, InvalidFormatException {
// 获取图片路径
URL resource = ResourceUtil.getResource("pics/poi_logo.png");
String targetFilePath = "/Users/fanting/temp/poi/word/blank.docx";
XWPFDocument document = new XWPFDocument();
File file = new File(targetFilePath);
FileOutputStream os = new FileOutputStream(file);
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
//先写入图片路径
run.setText(resource.getPath());
// 添加换行
run.addBreak();
//添加图片到word
FileInputStream is = new FileInputStream(resource.getFile());
run.addPicture(is, Document.PICTURE_TYPE_PNG,resource.getPath(), Units.toEMU(100),Units.toEMU(100));
//如果想把图片放单个页面,可以添加一个跨页
run.addBreak(BreakType.PAGE);
run.setText("新页面");
document.write(os);
}
}
注意,层级在run中 同时addBreak 也是一个注意点,如果在自己生成word时会有大用处
4.展示效果
5.源码地址
download.csdn.net/download/qq… 如果没有积分,但是实际需要的,可以私信我