三行代码 完美解决word标签文字替换 POI增强版 可插入图片

首先奉上源代码地址:
https://gitee.com/xuanZP/poiplus.git

在实际做项目过程中,经常会遇到要把数据动态插入到Word文件中的需求。此需求可以通过用程序填充数据到word模板中来实现。当下实际操作word的自然使用Apache POI居多(开源,免费),列举一下 我本人在开发过程中遇到的问题:

如:

1、替换不生效

2、格式丢失

3、图片无法替换等

。。。

不过实际上,直接使用Apache POI有很多局限不便,网上有些大神还发现了其中的一些BUG,甚至有些取巧的企业公司居然还做出了一套收费的工具包来,感觉很麻烦,故,通过查询整理,开发了自己的一套替换word中标签的代码供大家使用

自己感觉还挺好用,通过下载代码,接触核心业务的代码三行就能完成一些列操作,而且还能动态插入图片

核心代码如下:

 try {
            // 模板文件
            String template = "C:/Users/***/Desktop/aa/111.docx";
            // 输出文件
            String f = "C:/Users/***/Desktop/aa/" + RandomUtil.getRandomForIntegerBounded4(0, 100) + ".docx";
            // 输出的文件流 可根据实际情况调整
            OutputStream outputStream = new FileOutputStream(f);
            // 调用核心代码 Map<String, Object> mp = new HashMap<String, Object>();
            XWPFDocument doc = Word.generateWord(mp,template);
            doc.write(outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }

代码中 mp 为要替换的信息 键值对形式:其中键为 模板中的标签 值为 新的字段:

mp.put("${companyname2}", "value");

文档中标签截图如下:

 

 

替换一般字符的时候可直接将值放入map 中,如果是插入图片需设置图片属性:

      Map<String, Object> img = new HashMap<String, Object>();
        // 图片宽度
        img.put("width", "500");
        // 图片长度
        img.put("height", "300");
        // 图片后缀
        img.put("type", "jpg");
        // 图片地址 可以为本都路径 也可以为url
        img.put("content", path);

        mp.put("${img001}",img);