如何做淘宝客的网站,浏览器网页版在线使用,青岛市建筑工程管理服务中心,wordpress 模糊搜索续上一期的更新内容 #xff0c;导出的是单张图片#xff0c;直接在路径的src 里面填写对应的占位符#xff0c;就可以了#xff0c;随着需求的变化#xff0c;那么今天我们继续往下写一个循环导出多张图片到word里面。 使用FreeMarker导出word文档(支持导出单张图片)
…续上一期的更新内容 导出的是单张图片直接在路径的src 里面填写对应的占位符就可以了随着需求的变化那么今天我们继续往下写一个循环导出多张图片到word里面。 使用FreeMarker导出word文档(支持导出单张图片)
首先我们需要进行在word 里面把对应的模版设置好。 设置好点击另存为目前我用的html 格式的网上也有很多xml 形式的每种写法还不一样 接着我们用记事本进行打开第一步一定要先修改编码格式为utf-8的 然后我们将html 中head中的标签全部如果编码不修改head标签不删除将来导出的时候就是乱码这个坑是很深的排查了好长时间才解决。 这些都修改好后我们点击另存为将这个模版改成后缀为ftl形式的 接下来我们就开始编写代码 Overridepublic void exporttdYsdWord(HttpServletRequest request,HttpServletResponse response, String objId, String gllx) {ListMapString, String list null;ListMapString, String list3 null;ListMapString, String list5 null;String ysdName ;String ysdSql ;String zpSql ;String sdsgfa ;String ysgjjd ;String sdsgfaEname ;if (0.equals(gllx)) {sdsgfa sdsgfa;ysgjjd ysgjjd;sdsgfaEname sczbjys_sczbjys_sdsgfa;ysdName 中间环节验收报告;ysdSql select t.gcmc,t.jgdw,t.jgdwfzr,t.jgdwfzrdh, t.tdsgdw,t.tdsgdwlxr,t.tdsgdwlxrdh,to_char(t.sqyssj,yyyy-MM-dd) sqyssj, t.czwt, (select a.username from gw_yhgl_user a where a.id t.yxbzrm) yxbzrm, (select h.value from gw_limit_enums h where h.enumName like %sczbjys_sczbjys_yxbz% and h.key t.yxbz) yxbz,(select t.value from gw_limit_enums t where t.enumName like %sczbjys_sczbjys_ysgjjd% and t.keyysgjjd) ysgjjd from GW_SCZBJYS_ZLC t where t.OBJ_ID ?;}list this.hibernateDao.queryForListWithSql(ysdSql,new String[]{objId});MapString, String map0 new HashMapString, String();MapString, Object map new HashMapString, Object();StringBuilder sb new StringBuilder();String aa;zpSqlselect t.ipath ,t.dpt from gw_pig_address_rw t where t.taskid? and t.ipath is not null and t.dpt问题照片 and t.dpt is not null and t.ipath not like %dat% ;list3 this.hibernateDao.queryForListWithSql(zpSql,new String[]{objId});String zpSqlaselect t.ipath ,t.dpt from gw_pig_address_rw t where t.taskid? and t.ipath is not null and t.dpt is not null and t.ipath not like %dat% ;list5 this.hibernateDao.queryForListWithSql(zpSqla,new String[]{objId});if(list3.size()0){for (MapString, String stringObjectMap : list3) {if (stringObjectMap.get(DPT).equals(问题照片)) {
// map.put(PSZP, PlatformConfigUtil.getString(TASK_PIC_ADDRESS) stringObjectMap.get(IPATH));
// aa String.valueOf(sb.append(PlatformConfigUtil.getString(TASK_PIC_ADDRESS) stringObjectMap.get(IPATH)).append(,));
// aa String.valueOf(sb.append( img width249 height273\ src\PlatformConfigUtil.getString(TASK_PIC_ADDRESS) stringObjectMap.get(IPATH)).append().append(,));aa String.valueOf(sb.append(img width\249\ height\273\ src\PlatformConfigUtil.getString(TASK_PIC_ADDRESS) stringObjectMap.get(IPATH)\).append(,));}}}else{for (MapString, String stringObjectMap : list5) {if (!stringObjectMap.get(DPT).equals(问题照片)) {
// map.put(PSZP, PlatformConfigUtil.getString(TASK_PIC_ADDRESS) stringObjectMap.get(IPATH));
// aa String.valueOf(sb.append(PlatformConfigUtil.getString(TASK_PIC_ADDRESS) stringObjectMap.get(IPATH)).append(,));String hhimg width\249\ height\273\ src\http://192.168.200.86:18080/XSGL/2023-07-27/20230802155008.jpg\,img width\249\ height\273\ src\http://192.168.200.86:18080/XSGL/2023-07-27/20230802154952.jpg\;aa String.valueOf(sb.append(img width\249\ height\273\ src\PlatformConfigUtil.getString(TASK_PIC_ADDRESS) stringObjectMap.get(IPATH)\).append(,));}}}if(aa.length()0){String a1 aa.substring(0, aa.length() - 1);map.put(PSZP, a1);}else{if(aa.length()0){String a1 aa.substring(0, aa.length() - 1);map.put(PSZP, a1);}else{map.put(PSZP, );}}if (!Tool.isEmptyList(list)) {map0 list.get(0);if (Tool.isEmptyStr(map0.get(gcmc))) {map.put(GCMC, );} else {map.put(GCMC, map0.get(gcmc));}if (Tool.isEmptyStr(map0.get(jgdw))) {map.put(JGDW, );} else {map.put(JGDW,getEnumsValueFromEnumDB(sczbjys_sczbjys_jgdw,map0.get(jgdw)));}if (Tool.isEmptyStr(map0.get(tdsgdw))) {map.put(TDSGDW, );} else {map.put(TDSGDW, map0.get(tdsgdw));}if (Tool.isEmptyStr(map0.get(tdsgdwlxr))) {map.put(TDSGDWLXR, );} else {map.put(TDSGDWLXR, map0.get(tdsgdwlxr));}if (Tool.isEmptyStr(map0.get(tdsgdwlxrdh))) {map.put(TDSGDWLXRDH, );} else {map.put(TDSGDWLXRDH, map0.get(tdsgdwlxrdh));}if (Tool.isEmptyStr(map0.get(yxbz))) {map.put(YXBZ, );} else {map.put(YXBZ, map0.get(yxbz));}if (Tool.isEmptyStr(map0.get(yxbzrm))) {map.put(YXBZRM, );} else {map.put(YXBZRM, map0.get(yxbzrm));}if (Tool.isEmptyStr(map0.get(ysgjjd))) {map.put(YSGJJD, );} else {map.put(YSGJJD, map0.get(ysgjjd));}if (Tool.isEmptyStr(map0.get(sqyssj))) {map.put(SQYSSJ, );} else {SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd);String string map0.get(sqyssj); Date parse null;try {parse simpleDateFormat.parse(string);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}String format simpleDateFormat.format(parse);StringBuilder myName new StringBuilder(format);myName.setCharAt(4, 年);myName.setCharAt(7, 月);myName.append(日);System.out.println(myName);
// 时间变成 年月日形式map.put(SQYSSJ, myName.toString());}if (Tool.isEmptyStr(map0.get(czwt))) {map.put(CZWT, );} else {map.put(CZWT, map0.get(czwt));}map.put(SJDW, 设计单位);map.put(JLDW, 监理);map.put(BD, 121);map.put(SDJG, 结构好);map.put(CD, 长度1);map.put(JCJ, 井口1);String hhimg width\249\ height\273\ src\http://192.168.200.86:18080/XSGL/2023-07-27/20230802155008.jpg\,img width\249\ height\273\ src\http://192.168.200.86:18080/XSGL/2023-07-27/20230802154952.jpg\;map.put(TFT, );
// map.put(PSZP, hh);
// map.put(YSGJJD, 飒飒);} else {map.put(SJDW, );map.put(JLDW, );map.put(BD, );map.put(SDJG, );map.put(CD, );map.put(JCJ, );map.put(TFT, );}try {WordUtils.exportWorde(request, response, map, scbzjystd.ftl,ysdName);} catch (IOException e) {// TODO Auto-generated catch block
// e.printStackTrace();}}
} 图片的格式高宽度提前在代码里面设置好然后我们在模版里面用一个占位符来进行替代就可以了。 设置下载格式 public static void exportWorde(HttpServletRequest request,HttpServletResponse response, MapString, Object map,String templateName, String fileName) throws IOException {String pathString request.getSession().getServletContext().getRealPath(/WEB-INF/templete/);logger.info(获取到的模板路径是templetePath------- pathString);configuration.setDirectoryForTemplateLoading(new File(pathString));Template freemarkerTemplate configuration.getTemplate(templateName);File file null;InputStream fin null;ServletOutputStream out null;try {// 调用工具类的createDoc方法生成Word文档file createDoce(map,freemarkerTemplate);fin new FileInputStream(file);response.setCharacterEncoding(utf-8);response.setContentType(application/msword);// 设置浏览器以下载的方式处理该文件名fileName fileName DateUtil.currentDateToString() .doc;response.setHeader(Content-Disposition, attachment;filename.concat(String.valueOf(URLEncoder.encode(fileName, UTF-8))));out response.getOutputStream();byte[] buffer new byte[512]; // 缓冲区int bytesToRead -1;// 通过循环将读入的Word文件的内容输出到浏览器中while((bytesToRead fin.read(buffer)) ! -1) {out.write(buffer, 0, bytesToRead);}} finally {if(fin ! null) fin.close();if(out ! null) out.close();if(file ! null) file.delete(); // 删除临时文件}}
设置编码 private static File createDoce(MapString, Object dataMap, Template template) {String name .doc;File f new File(name);Template t template;try {// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开Writer w new OutputStreamWriter(new FileOutputStream(f), utf-8);t.process(dataMap, w);w.close();} catch (Exception ex) {ex.printStackTrace();throw new RuntimeException(ex);}return f;} 导出效果 若本文对你有所帮助请一键三连说不定后期工作中就用到了。