三行代码 完美解决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);
为之一笑:
客户被绑,蒙眼,惊问:“想干什么?” 对方不语,鞭笞之,客户求饶:“别打,要钱?” 又一鞭,“十万够不?” 又一鞭,“一百万?” 又一鞭。客户崩溃:“你们TMD到底要啥?” “要什么?我帮你做项目,写代码的时候也很想知道你TMD到底想要啥!”
客户被绑,蒙眼,惊问:“想干什么?” 对方不语,鞭笞之,客户求饶:“别打,要钱?” 又一鞭,“十万够不?” 又一鞭,“一百万?” 又一鞭。客户崩溃:“你们TMD到底要啥?” “要什么?我帮你做项目,写代码的时候也很想知道你TMD到底想要啥!”