使用poi展示多张图片 的问题
需求:模板中占位符只有一个,并且由于是模板不能像jsp、HTML一样传一个list过去然后在页面中进行处理。后端map.put(“”,value)放在for循环中只能存储最后一个值,并且还报错!
解决方案:
//前面的照片
List<PictureRenderData> images = new ArrayList<PictureRenderData>();
if (billOrderDetail.getBeforeDealImgPath() != null && !"".equals(billOrderDetail.getBeforeDealImgPath())) {
for (String item : billOrderDetail.getBeforeDealImgPath().split(",")) {
if (item != null && !"".equals(item)) {
URL url = new URL(item);
HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
String message = urlcon.getHeaderField(0);
if (StringUtils.hasText(message) && message.startsWith("HTTP/1.1 404")) {
} else {
images.add(new PictureRenderData(420, 330, ".png", BytePictureUtils.getUrlBufferedImage(item)));
}
}
}
}
ListRenderPolicy policy = new ListRenderPolicy();
List<Object> list = new ArrayList<>();
list.addAll(images);
datas.put("beforeImagePath", list);
//后面照片
List<PictureRenderData> images2 = new ArrayList<PictureRenderData>();
if (billOrderDetail.getEndDealImgPath() != null && !"".equals(billOrderDetail.getEndDealImgPath())) {
for (String item2 : billOrderDetail.getEndDealImgPath().split(",")) {
if (item2 != null && !"".equals(item2)) {
URL url = new URL(item2);
HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
String message = urlcon.getHeaderField(0);
if (StringUtils.hasText(message) && message.startsWith("HTTP/1.1 404")) {
} else {
images.add(new PictureRenderData(420, 330, ".png", BytePictureUtils.getUrlBufferedImage(item2)));
}
}
}
}
ListRenderPolicy policy2 = new ListRenderPolicy();
Configure config = Configure.newBuilder()
.bind("beforeImagePath", policy)
.bind("endImagePath",policy2).build();
List<Object> list2 = new ArrayList<>();
list.addAll(images2);
datas.put("endImagePath", list2);
最后生成文件
return 自己工具类.createFileConfig(*, *, 自己的参数, 参数, 路径,config);
没有工具类 参考
XWPFTemplate template = XWPFTemplate.compile(路径, config).render(数据);
效果展示
这里是三张图片