poi word 基础概念讲解二 并附上简单代码demo

101 阅读2分钟

我不是一个资深高手,只想描述普通人在项目中真正常见的问题,以及我的一些经验!

上一篇文章中讲了针对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… 如果没有积分,但是实际需要的,可以私信我