poi根据Word模板导出Word文件,Word模板
从别人那里看的,结果后来发版到服务器导出时报错,访问不到模板路径位置,后来改成了。这里我自己整理一下
重点:解决 访问不到Word模板路径
//word模板文件流 这种方法不会在linux上或者jar启动失效
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/template/test2.docx");
1.引入依赖,添加到pom.xml文件
<!-- word导出 --><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.7.3</version></dependency><!-- 上面需要的依赖--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency>
2.新建一个controller用于测试,下图是我的模板路径(声明一下我这里是springboot项目) src/main/resources/static/template/test2.docx
@RequestMapping("/auth/exportWord/")
@RestController
public class ExportWordController {/*** 导出word --- poi-tl(包含动态表格)*/@RequestMapping("/exportDataWord3")public void exportDataWord3(HttpServletResponse response) throws IOException {try {//组装动态表格列表数据List<Map<String,Object>> detailList = new ArrayList<Map<String,Object>>();for (int i = 0; i < 5; i++) {Map<String,Object> detailMap = new HashMap<String, Object>();detailMap.put("procName", "总装" + i + "工序");//工序detailMap.put("reportName", "隔壁老王" + i);//装配人员detailMap.put("materialName","压缩机组件" + i);detailMap.put("number","20210817" + i);detailMap.put("installNum",i + "台");detailList.add(detailMap);}//word模板文件流 这种方法不会在linux上或者jar启动失效InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/template/test2.docx");//渲染表格HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();Configure config = Configure.newBuilder().bind("detailList", policy).build();XWPFTemplate template = XWPFTemplate.compile( inputStream, config).render(new HashMap<String, Object>() {{put("detailList", detailList);put("predefine2", "AR系列");put("no","20210803001");put("spec","AR-5-N");put("planStartDate", "2021-9-10 16:11:00");put("customerName","非洲私立医院");put("salesorderNo","ATCL21-023");put("test1","10088200");put("test2","隔壁老王");put("test3","隔壁老王");}});//生成文件名String fileName = new Date().getTime() + ".docx";//文件名 带后缀// 设置强制下载不打开response.setContentType("application/force-download");// 设置文件名,解决中文乱码问题response.setCharacterEncoding("utf-8");response.addHeader("Content-Disposition","attachment; filename=\"" + new String("记录跟踪单".getBytes("gbk"),"iso8859-1") + fileName + "\"");OutputStream out = response.getOutputStream();template.write(out);out.flush();out.close();template.close();} catch (Exception e) {e.printStackTrace();}}}
3.Word模板样式:
4.导出结果:
AR系列氧气机生产记录跟踪单
SAET-7.5-027/C N0.:20210803001
产品型号 |
AR-5-N |
计划生产日期 |
2021-9-10 16:11:00 |
||
客 户 |
非洲私立医院 |
订单号 |
ATCL21-023 |
||
工 序 |
装配人员 |
主要材料名称 |
批号/编号 |
安装数量 |
|
总装0工序 |
隔壁老王0 |
压缩机组件0 |
202108170 |
0台 |
|
总装1工序 |
隔壁老王1 |
压缩机组件1 |
202108171 |
1台 |
|
总装2工序 |
隔壁老王2 |
压缩机组件2 |
202108172 |
2台 |
|
总装3工序 |
隔壁老王3 |
压缩机组件3 |
202108173 |
3台 |
|
总装4工序 |
隔壁老王4 |
压缩机组件4 |
202108174 |
4台 |
|
颜 色 |
|||||
其 它 |
|||||
整机编号:10088200 验证:隔壁老王 批准:隔壁老王
poi根据Word模板导出Word文件,Word模板相关推荐
- java poi导出excel模板_POI通过模板导出EXCEL文件的实例
一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...
- SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?
前文我们介绍了通过Apache POI通过来导出word的例子:那如果是word模板方式,有没有开源库通过模板方式导出word呢?poi-tl是一个基于Apache POI的Word模板引擎,也是一个 ...
- ftl模板导出excel_使用freemarker模板引擎导出word或excel文件(代码实现)
在项目中我们会遇到很多导入导出excel或者word 有时候一些比较复杂的表格设计用freemarker 来做为模板导出还是很不错的 具体操作 我们要针对该列表做数据导出模板 在桌面右键新建一个exc ...
- 使用EasyPoi根据模板导出Excel或word文档
接着上篇文章 Java根据模板导出Excel并生成多个Sheet 简单介绍下EasyPoi的使用,直接上代码吧 首先当然是先引入jar包了,看下图 其次,还是贴代码吧看实例,下面是根据模板导出的工具类 ...
- freemarker模板导出带表格word详细教程
前言:另外一篇是手机端的word导出,需要兼容性,不然在安卓手机会乱码 freemarker模板导出word循环图片表格详细教程_Java大表哥的博客-CSDN博客 并且另存为模版格式不同数据绑定方 ...
- java按照模板导出pdf或者word
一.java按照模板导出pdf (一)制作模板 1.在word里制作模板 因为PDF常用的软件不支持编辑,所以先用Word工具,如WPS或者Office新建一个空白Word文档,里面制作出自己想要的样 ...
- Java使用模板导出带图片word文档
之前已经写过一个 Java使用模板导出Word文档 由于系统升级,模板得添加图片,这个时候遇到了一个比较恶心的问题特地发文记录一下. 先把老模板翻出来 **.ftl 然后右键用wps或者office打 ...
- poi -- 上传、自定义模板导出excel文件插入到数据库
===maven文件=== <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi ...
- Springboot 自定义模板导出Excel文件
指定模板(自定义)导出数据,就像: 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 注意: 模板这里有个小坑,就是当传入的值为数组时,需要 ...
- Springboot 指定自定义模板导出Excel文件
前言 之前写过一篇极其简单的excel导入导出,是单个文件的: Springboot 最简单的结合MYSQL数据实现EXCEL表格导出及数据导入_小目标青年的博客-CSDN博客 还写过一篇单个,多个 ...
最新文章
- php传输数组给axios
- 玩转Mixly – 9、Arduino AVR编程 之 函数
- 什么是 CAS 机制?
- mysql 云主机名_mysql部署到云主机的笔记
- Spring------自动化装配Bean(一)
- Graph(2014辽宁ACM省赛)
- centos8解压war包
- 电脑屏幕保护插件-Fliqlo
- UE4自定义资源和编辑器(二):创建自定义编辑器
- UHD X310 MTU 大于1472 windows配置方法
- 鸿蒙系统能玩魔兽世界吗,魔兽世界TBC燃烧远征测试服,H英雄本的装备2小时内可以交易, 亲友们可以互相毛装备了...
- 三步解决NLP数据标注难题,百度大脑EasyDL专业版上线文本智能标注功能
- Web前端人员如何提升能力 提高效率有哪些方法
- matlab平均脸,BFM使用 - 获取平均脸模型的68个特征点坐标
- 一起搭建私有物联网云平台讲解
- 数据分析,把握商机 关键词采集工具助你挖掘潜在客户
- IBMMQ-安装IBMMQ服务端7.5(windows)
- python正则表达式详解compile_python正则表达式详解
- 基于jsp mysql的二手物品交易系统_jsp+mysql高校二手物品交易系统设计
- Python批量获取高校基本信息