废话不多说上代码
<dependencies><!-- web支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency><!-- 对JSP的支持 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!-- word导出  方式一:poi-tl--><!-- poi-tl是基于Apache POI的Word模板引擎。poi-tl依赖的是poi3.16版本 --><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><!-- word导出  方式二:easypoi--><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.0.3</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.0.3</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.0.3</version></dependency>
</dependencies>

package com.example.word.controller;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import com.example.word.common.MoneyUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.*;public class testClas {public static final String filePath = "/static/template/";public static void exportDataWordD4(){Map<String, Object> params = new HashMap<>();// TODO 渲染其他类型的数据请参考官方文档DecimalFormat df = new DecimalFormat("######0.00");Calendar now = Calendar.getInstance();double money = 0;//总金额//组装表格列表数据List<Map<String,Object>> typeList=new ArrayList<Map<String,Object>>();for (int i = 0; i < 2; i++) {Map<String,Object> detailMap = new HashMap<String, Object>();detailMap.put("index", i+1);//序号if(i == 0){detailMap.put("sub_type", "监督技术装备");//商品所属大类名称}else if(i == 1){detailMap.put("sub_type", "火灾调查装备");//商品所属大类名称}else if(i == 2){detailMap.put("sub_type", "工程验收装备");//商品所属大类名称}double saleprice=Double.valueOf(String.valueOf(100+i));Integer buy_num=Integer.valueOf(String.valueOf(3+i));String buy_price=df.format(saleprice*buy_num);detailMap.put("buy_price", buy_price);//所属大类总价格money=money+Double.valueOf(buy_price);typeList.add(detailMap);}//组装表格列表数据List<Map<String,Object>> detailList=new ArrayList<Map<String,Object>>();for (int i = 0; i < 3; i++) {Map<String,Object> detailMap = new HashMap<String, Object>();detailMap.put("index", i+1);//序号if(i == 0 || i == 1){detailMap.put("product_type", "二级分类1");//商品二级分类}else{detailMap.put("product_type", "二级分类2");//商品二级分类}detailMap.put("title", "商品"+i);//商品名称detailMap.put("product_description", "套");//商品规格detailMap.put("buy_num", 3+i);//销售数量detailMap.put("saleprice", 100+i);//销售价格detailMap.put("technical_parameter", "技术参数"+i);//技术参数detailList.add(detailMap);}//总金额String order_money=String.valueOf(money);//金额中文大写String money_total = MoneyUtils.change(money);HashMap<String, Object> datamap = new HashMap<>();datamap.put("typeList", typeList);datamap.put("detailList",detailList);datamap.put("order_number", "2356346346645");datamap.put("y", now.get(Calendar.YEAR));//当前年datamap.put("m", (now.get(Calendar.MONTH) + 1));//当前月datamap.put("d", now.get(Calendar.DAY_OF_MONTH));//当前日datamap.put("order_money",order_money);//总金额datamap.put("money_total",money_total);//金额中文大写//渲染表格  动态行HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();Configure config = Configure.newBuilder().bind("typeList", policy).bind("detailList", policy).build();String tempFileName = "orderD2.docx";String temDir="C:/test/"+ File.separator+"file/word/"; ;//生成临时文件存放地址String getinFileName =   filePath + tempFileName;//获取模板路径testClas a = new testClas();InputStream getin = a.geresource(getinFileName);//生成worldmakeword(getin,config,datamap,temDir);}public static void makeword(InputStream resource,Configure config,HashMap<String, Object> hashMap,String temDir){try {XWPFTemplate template = XWPFTemplate.compile(resource, config).render(hashMap);//生成文件名Long time = new Date().getTime();// 生成的word格式String formatSuffix = ".docx";// 拼接后的文件名String fileName = time + formatSuffix;//文件名  带后缀FileOutputStream fos = new FileOutputStream(temDir+fileName);template.write(fos);template.close();}catch (Exception e) {e.printStackTrace();}}public InputStream geresource(String filePath){InputStream resourceAsStream = this.getClass().getResourceAsStream(filePath);return resourceAsStream;}public static void main(String[] args) {exportDataWordD4();}}
public static void main(String[] args) {exportDataWordD4();}}

java根据模板动态生成word文档带表格相关推荐

  1. java根据模板动态生成word文档

    模板文档 首先,需要创建一个word模板,我的模板例子如下: 动态生成的文档 根据java代码动态的修改模板生成自己想要的文档,结果如下: 具体代码 代码操作如下:其中进行了文本的替换,图片的插入,以 ...

  2. Freemarker - 根据模板动态生成word文档

    文章目录 Freemarker 根据模板动态生成word文档 Freemarker 介绍: Freemarker 使用: freemarker加载模板目录的方法 参考资料 Freemarker 根据模 ...

  3. java利用freemarker动态生成word文档及动态表格

    这里写自定义目录标题 目标 准备 实现 处理模板 java实现 验证 目标 根据给定word模板,动态填充指定内容,并输出为新的word文档. 准备 1.模板: 准备一份目标格式的word文档,如:w ...

  4. Springboot中使用freemarker动态生成word文档

    文章目录 freemarker模板动态生成word文档 前言 准备 简单模板准备 <一> `word 2003` 新建`.doc` 模板 <二> 另存为`.xml` 文件,格式 ...

  5. Java使用FreeMarker自动生成Word文档(带图片和表单)

    Java使用FreeMarker自动生成Word文档(带图片和表单) 1 背景 2 目标效果 3 创建Word模板 3.1 创建模板文档 3.2 转换模板文档 3.3 处理模板文档中的占位符 3.4 ...

  6. spring使用freemarker生成word文档包含表格、图片(循环插入)

    spring使用freemarker生成word文档包含表格.图片(循环插入) 效果图 因为测试数据是重复的,所以显示都是重复的数据,替换导入map中的数据可以显示不重复的数据. 操作步骤 1,创建一 ...

  7. java-制作flt模板,导出word文档带图片循环

    java-制作flt模板,导出word文档带图片循环 模板制作 制作xml 编辑xml文档 将xml模板转换为flt 编写工具类 导出word工具类 获取远程图片 使用示例 使用示例--springb ...

  8. 【.NET】用Aspose.Words for .NET动态生成word文档中的数据表格

    1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档 ...

  9. 用Aspose.Words for .NET动态生成word文档中的图片或水印

    1.概述 在项目中生成word文档,这个功能很普遍的,一般生成都是纯文字或是列表的比较多,便于客户打印,而要把图片也生成到word文档中的需求有些客户也是需要的,例如产品图片.这次我们介绍的是如何利用 ...

最新文章

  1. MNIST 训练测试
  2. android 8.0 intent,Android 8.0通知栏适配问题
  3. 吴恩达机器学习(第二章)——单变量线性回归
  4. 用户id可以出现在url中吗_下载Google Drive中的文件
  5. P2490-[SDOI2011]黑白棋【博弈论,dp】
  6. Java并发教程–阻塞队列
  7. js中return、return false 、return true各自代表什么含义
  8. php mysql 链表_浅谈PHP链表数据结构(单链表)
  9. pc控制iphone的软件_哪个备忘录便签app可以和PC电脑一块儿用
  10. 清华,就要成为地表最强研究机构了
  11. 一起谈.NET技术,NET下RabbitMQ实践 [配置篇]
  12. 利用getData获取图片中的图表信息数据
  13. live2d模型导入unity报错 live2dsdk与Cubism下载 live2dSDKforUnity使用手册
  14. win7分区软件_全自动分区装系统PE纯净无广告
  15. 优酷播放黑科技 | 基于WebRTC实现的直播“云多视角“技术解析
  16. open函数返回-1_这 68 个 Python 内置函数请收好!
  17. vue slot具名插槽
  18. 【讲清楚,说明白!】Zabbix企业级自动化监控与无人报警系统--实战演练
  19. Java项目-基于Springboot实现的自动化测试平台
  20. 另一个jar包引不了_《嫌疑人X的献身》:一个天才的陨落

热门文章

  1. [PTA]实验7-2-10 简易连连看
  2. web.xml is missing and failOnMissingWebXml is set to true
  3. 以英雄之名为S9总决赛助攻! 虎牙直播and华为云CDN,team work才会赢
  4. 拯救者R9000K不插电/PD充电蓝屏解决方案
  5. 鸿蒙os 2.0跑分,华为MatePad Pro 2首个跑分曝光 搭载麒麟9000+鸿蒙OS 2.0系统
  6. Qt/C++编写自定义控件44-天气仪表盘
  7. 被美国列入恶名市场:拼多多到底做错了什么?
  8. Mac操作系统配置Git
  9. layui表格筛选查询
  10. ElasticSearch实现高亮、范围查询和多条件组合查询(java和kibana)