使用JAVA向word中插入图片

使用java向word中插入图片


小编最近在学习Apache POI,所以这里,我们是使用的了Apache POI来对word进行操作。
因为在使用POI在wrod中插入图片时,我们会出现图片显示不出来的问题。在word中插入图片代码如下

public static void main(String[] args)throws Exception {
//        创建一个document对象,相当于新建一个word文档(后缀名为.docx)。
        XWPFDocument document=new XWPFDocument();
//        创建一个段落对象。
        XWPFParagraph paragraph=document.createParagraph();
//        创建一个run。run具体是什么,我也不知道。但是run是这里面的最小单元了。
        XWPFRun run=paragraph.createRun();
//        插入图片
        run.addPicture(new FileInputStream("E:/1.png"),
                XWPFDocument.PICTURE_TYPE_PNG,
                "1.png",
                400,
                200);
//        创建一个输出流 即是该文档的保存位置
        OutputStream outputStream=new FileOutputStream("E:/pic.docx");
        document.write(outputStream);
        outputStream.close();
    }

看下面的结果,发现图片并没有插入进来,根据小编的测试,发现其实是插入进来了,只是我们看不到,可是这个还是满足不了我们的需求……
使用JAVA向word中插入图片_第1张图片
经过小编在度娘上的搜索,发现了几种方法,但是经过小编的亲自测试,大多数都是封装一个类,但是这个类里面有句代码只支持poi的3.15及以下版本的,这个在网上一搜一大堆,这儿就不说了。我们还是回到今天的正题,解决我们代码的bug,虽然没有报错,运行也是正常,但是我们的代码是存在bug的,这是我在查错的时候看到了一个博主写的。
错误的原因就是,我们传的参数里 width 和 height两个值,不是一个整形,而是需要用一个Units工具类来转换一下类型的
在这里插入图片描述
需要使用 Units 的 toEMU 方法进行转换,修改后的代码如下:

 public static void main(String[] args)throws Exception {
//        创建一个document对象,相当于新建一个word文档(后缀名为.docx)。
        XWPFDocument document=new XWPFDocument();
//        创建一个段落对象。
        XWPFParagraph paragraph=document.createParagraph();
//        创建一个run。run具体是什么,我也不知道。但是run是这里面的最小单元了。
        XWPFRun run=paragraph.createRun();
//        插入图片
        run.addPicture(new FileInputStream("E:/1.png"),
                XWPFDocument.PICTURE_TYPE_PNG,
                "1.png",
                Units.toEMU(400),
                Units.toEMU(200));
//        创建一个输出流 即是该文档的保存位置
        OutputStream outputStream=new FileOutputStream("E:/pic.docx");
        document.write(outputStream);
        outputStream.close();
    }

启动后,成功向word中添加图片:
使用JAVA向word中插入图片_第2张图片
以上就是用Java向word中插入图片的操作了。。。。。

参考文档:添加链接描述

你可能感兴趣的:(使用JAVA向word中插入图片)