Java 根据Word模板下载

news/2024/11/23 23:26:51/

pageoffice 花钱

poi 设置格式麻烦

freemarker word转xml,xml再转ftl,修改太麻烦

poi-tl (推荐) 简单,操作容易,word设置什么样导出的就是什么样

官网API:http://deepoove.com/poi-tl/http://deepoove.com/poi-tl/icon-default.png?t=LBL2http://deepoove.com/poi-tl/

/*** @Description 文件下载* @param dataMap* @param type* @Throws* @Return void* @Date 2021-09-14 15:31:03* @Author WangKun**/public static void downloadFile(Map<String, Object> dataMap,String type, HttpServletResponse response){BufferedInputStream bis = null;BufferedOutputStream bos = null;try {File file = templateCreateDoc(dataMap, Objects.requireNonNull(DocumentEnum.getValue(type)));response.setContentType("application/msword;charset=utf-8");if (file != null) {response.addHeader("Content-Disposition", "attachment; filename=\""+ new String(file.getName().getBytes(), StandardCharsets.ISO_8859_1) + "\"");bis = new BufferedInputStream(new FileInputStream(file));bos = new BufferedOutputStream(response.getOutputStream());byte[] buff = new byte[10240];int bytesRead;while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {bos.write(buff, 0, bytesRead);}bis.close();bos.close();// 下载完毕删除磁盘文件if (file.exists()) {file.delete();}}} catch (Exception e) {e.printStackTrace();}}
 

 dataMap:要放到模板里的数据

 type:这个是做的枚举类型获取模板名称的,可以直接写模板名称

/*** @Description 数据组装* @param* @Throws* @Return java.util.Map<java.lang.String,java.lang.Object>* @Date 2021-09-14 15:46:25* @Author WangKun**/public static Map<String, Object> siteInspectRecordMap() {Map<String, Object> dataMap = new HashMap<>();dataMap.put("checkUnit", "");return dataMap;}

模板转换代码:

/*** @Description 模板转换* @param dataMap* @param ftlName* @Throws* @Return java.io.File* @Date 2021-09-15 10:33:04* @Author WangKun**/public static File templateCreateDoc(Map<String, Object> dataMap, String ftlName) {// 获取模板文件地址 utf-8获取 空格不转义String path = URLDecoder.decode(Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("")).toString().replace('/', '\\').replace("file:", "").replace("classes\\", "").substring(1) + "classes\\template\\", "utf-8");File file = new File(path+"\\"+ftlName);if (!file.exists()) {return null;}//调用模板,填充数据XWPFTemplate template = XWPFTemplate.compile(path+ftlName).render(dataMap);try {String fileName = path + ftlName.substring(0, ftlName.indexOf(".")) + ".doc";File file1 = new File(fileName);//要导出的文件名FileOutputStream out = new FileOutputStream(fileName);template.write(out);out.flush();out.close();template.close();return file1;} catch (IOException e) {e.printStackTrace();}return null;}

模板格式:

导出结果:

 

注意模板的字段值一定要与map中的key对应,否则不可以. 

 

 


http://www.ppmy.cn/news/694884.html

相关文章

office web apps在线office文件预览部署及问题处理

附下载链接 基本环境需要两台机&#xff0c;1台为域控&#xff0c;1台为 &#xff08;office web apps &#xff0c;需要加入到域&#xff09; 主机1&#xff1a;添加域控服务 安装完服务后提升为域控 其余步骤 省略 2&#xff1a;office web apps 主机 2.1 安装.net 4.52,…

【日照seo多少钱】一名出色的推广优化师应具备的7大能力?

【日照seo多少钱】一名出色的推广优化师应具备的7大能力? 之前 日照seo菌从岗位出发,为大家分析了知识、技能、才干三大方面的能力(3招透视SEMer岗位职责,助力职业发展)。 今天我们从另一个角度带大家解读一下,一个出色的SEMer具备哪些能力? 我们把工作能力分为“硬…

Microsoft Office安装全过程记录

相信过新年时大家都会收到许多压岁钱吧&#xff08;也可能是输出了许多压岁钱&#xff09;&#xff0c;过了一个新年&#xff0c;我收到了2000多块压岁钱。因此&#xff0c;我想完成一个一直没有完成的梦想&#xff0c;那就是把电脑上的WPS换成信息课老师示范的Microsoft Offic…

Office2019 卸载重新安装-2022 Win10【不花钱+官方途径】

Office2019 卸载重新安装-2022 Win10 前言基本步骤结束语 前言 年少无知&#xff0c;曾经卸载过Office&#xff0c;但是再重新安装的时候发现安装不成功&#xff0c;有类似于未卸载干净的提示信息。于是一直使用WPS来代替&#xff0c;但其实有一些功能WPS不能完美地替代Office…

【学习笔记】【DOA子空间算法】4 ESPRIT 算法

【学习笔记】【DOA子空间算法】4 ESPRIT 算法 4 ESPRIT 算法4.1 算法原理4.2 算法步骤4.3 代码实现4.4 参考内容 4 ESPRIT 算法 4.1 算法原理 ESPRIT 算法假设阵列传感器成对出现&#xff08;即有一组平行的传感器&#xff09;&#xff0c;并且每对传感器之间有相同的位移 Δ…

Conda虚拟环境创建与Python模块安装

下面咱们来聊一下conda虚拟环境&#xff0c;首先说一下我们去使用conda虚拟环境的必要性&#xff0c;那企业很多时候我们会面对同时开发多个项目&#xff0c;那这些项目很有可能会使用不同的Python环境来去运行啊&#xff0c;那这里面有的Python环境可能是需要3.5的Python&…

小米手机连接电脑只能看到部分相片_小米手机连接电脑后怎么看照片?

展开全部 小米手62616964757a686964616fe78988e69d8331333363396465机连接电脑之后&#xff0c;可以在电脑的移动磁盘里面查看手机里面的图片。具体的方法如下&#xff1a; 1、首先需要使用数据线把手机连接到电脑上面。 2、然后点击我的电脑&#xff0c;在里面找到小米的磁盘&…

计算机桌面英文翻译,电脑桌面便签软件敬业签翻译器如何在线翻译英文信息资料文献?...

原标题&#xff1a;电脑桌面便签软件敬业签翻译器如何在线翻译英文信息资料文献? 敬业签是一款占用内存小、空间容量大的桌面便签软件&#xff0c;而且它还能将记录内容在云端备份&#xff0c;并支持用户对所记内容设置密码保护&#xff0c;所以很多用户经常使用它来记录重要事…