POI 替换docx中的文字和图片

2022-07-11 00:00:00 图片 文字 替换

参考文档:链接

1. 修改docx文件,给要替换的内容命名

替换为文字:{ {name}}
替换为图片:{ {@image}}

D:/ old.docx
《POI 替换docx中的文字和图片》

2. 代码部分

步骤:

  1. 创建map集合将要替换的内容写入
  2. 处理图片
  3. 替换docx文件
  4. 写到硬盘中
public class ReplaceDocx { 
    // 替换docx文件中的信息
    private File docxReplace(String wordPath)  { 
        // 将要替换的文字、图片写入map集合中
        Map<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        map.put("sex", "男");
        map.put("address", "北京市XX区XX路");
        try { 
            // 图片的处理
            PictureRenderData pictureRenderData = Pictures.ofStream(new FileInputStream("d:\\zhangsan.jpg"), PictureType.PNG)
                    .size(102, 126).create();
        } catch (FileNotFoundException e) { 
            e.printStackTrace();
        }
        map.put("photo", pictureRenderData);

        // 生成的新文件保存路径
        File repotrFile = new File("D:\\new.docx");
        try { 
        // 生成新的文件并写到硬盘
            XWPFTemplate.compile(wordPath).render(map, new FileOutputStream(repotrFile));
        } catch (IOException e) { 
            e.printStackTrace();
        }
        // Todo
        // 可以对文件执行其他操作,例如:打印,在打印完毕后删除文件
		// repotrFile.delete(); 
		// 或者直接返回File
        return repotrFile;
    }

    public static void main(String[] args) { 
        File file = new ReplaceDocx().docxReplace("D:\\old.docx");
    }
}

3. 重点

  1. map集合中定义的类型:Map<String, Object>如果有图片则需要将vlaue值定义为Object,如果替换的内容全部是字符,则只需要定义为Map<String, String>
    1.1 注意map集合key的值,只需要{ {}}内的字符串即可,其他教程使用的方法,可能需要带符号。
  2. 图片的处理:Pictures.ofStream(new FileInputStream("d:\\zhangsan.jpg"), PictureType.PNG).size(102, 126).create()
    2.1 Pictures的构造方法有很多,此例是通过字符流构造,还可以通过BufferedImage、base64、byte[]等参数构造,详见源码。
    2.2 第二个参数是创建的图片格式
    2.3 size()方法,很显然是指定生成的图片大小
    2.4 最重要的一点:在docx模板文件中图片的名字前要加@
  3. 替换模板文件并写到硬盘: XWPFTemplate.compile(wordPath).render(map, new FileOutputStream(repotrFile));
    原文作者:YUELEI118
    原文地址: https://blog.csdn.net/YUELEI118/article/details/125110334
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章