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

tech2023-02-13  97

三行代码 完美解决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);

 

最新回复(0)