比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel。
Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于

操作Excel格式文件的HSSF和

用于操作Word的HWPF;

一、前端使用get请求和post请求都可以

get请求:

window.location.href= appPath+"/export/handoverForm?ticketId="+self.ticketId +"&complainId="+row.id+"&formCode="+self.exportFormCode.complainDetail;

隐藏form表单改写成post请求,form表单get和post都可以:

<form id="exportForm" action="/service/xfComplain/exportCaseLedger" method="post"><input type="hidden" name="dataRange" id="dataRange"/><input type="hidden" name="processStatus" id="processStatus"/>     <input type="hidden" name="cantonCode" id="cantonCode"/><input type="hidden" name="startDate" id="startDate"/><input type="hidden" name="endDate" id="endDate"/><input type="hidden" name="multiFildMatch" id="multiFildMatch"/></form>

$("#dataRange").val(self.table.pageData.dataRange);$("#processStatus").val(self.table.pageData.processStatus);$("#startDate").val(self.table.pageData.startDate);$("#endDate").val(self.table.pageData.endDate);$("#multiFildMatch").val(self.table.pageData.multiFildMatch);$('#exportForm').submit();

二、java代码

@ResponseBody@RequestMapping("/exportWord")public void exportHandoverForm(HttpServletRequest request,HttpServletResponse response, ExportParam exportParam) {String projectPath = getProjectPath(request);String templateFile = getTemplateFile(exportParam, projectPath, request);Map<String, Object> data = new HashMap<>();File file = null;InputStream in = null;ServletOutputStream out = null;try {// 数据源HandoverModel handoverModel = getHandoverFormData(exportParam.getComplainId());// 反射机制,获取所有属性对象,在拿到属性值,设置数据for (Field field : HandoverModel.class.getDeclaredFields()) {// 暴力反射,不是public修饰的属性也要获取field.setAccessible(true);data.put(field.getName(), field.get(handoverModel));}// 数据源组成map键值对形式data.put("reportorList", handoverModel.getReportorList().getDatas());String fileName = handoverModel.getCaseCode();String exportFilePath = projectPath + ExportConstant.DEFAULT_EXPORT_PATH;logger.info("----------templateFile:" + templateFile);logger.info("-----------projectPath:" + projectPath);// Configure对象是处理表格数据,可以自适应生成对应行数数据Configure config = Configure.newBuilder().customPolicy("reportorList", new FileTablePolicy()).build();// XWPFTemplate对象是处理word文档对象,根据map数据源的键值对渲染文档数据XWPFTemplate template = XWPFTemplate.compile(templateFile, config).render(data);// 文件生成到本地,先生成好文档,再读取到内存中响应给前台String downloadFileName = fileName + ".docx";File outPutFile = new File(exportFilePath);if (!outPutFile.exists()) {outPutFile.mkdirs();}FileOutputStream outFile = new FileOutputStream(exportFilePath + downloadFileName);template.write(outFile);outFile.flush();outFile.close();template.close();// 通过文件流读取到文件,再将文件通过response的输出流,返回给页面下载file = new File(projectPath + ExportConstant.DEFAULT_EXPORT_PATH + downloadFileName);in = new FileInputStream(file);response.setCharacterEncoding("utf-8");response.setContentType("application/msword");response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(downloadFileName, "UTF-8"))));out = response.getOutputStream();byte[] buffer = new byte[512];int bytesToRead = -1;// 用响应对象response中的输出流读取生成好的文件while ((bytesToRead = in.read(buffer)) != -1) {out.write(buffer, 0, bytesToRead);}} catch (Exception e) {logger.error("导出word出错", e);} finally {if (in != null) try {in.close();if (out != null) out.close();if (file != null) file.delete(); // 删除临时文件} catch (IOException e) {logger.error("删除删除临时文件出错", e);}}}

使用XWPFTemplate引擎,插件化Configure插入表格;

三、不需要插入表格:

XWPFTemplate template = XWPFTemplate.compile(templateFile).render(data);

转载于:https://www.cnblogs.com/wmqiang/p/11602884.html

数据导出生成word附件使用POI的XWPFTemplate对象相关推荐

  1. xwpftemplate的时间设置_数据导出生成word附件使用POI的XWPFTemplate对象

    比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel. Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多 ...

  2. java poi读取word中附件_数据导出生成word附件使用POI的XWPFTemplate对象

    比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel. Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多 ...

  3. Java项目中利用Freemarker模板引擎导出--生成Word文档

    应邀写的一篇文章:Java项目中利用Freemarker模板引擎导出--生成Word文档 资源下载:https://download.csdn.net/download/weixin_41367523 ...

  4. php导出页面word,php导出生成word的方法_PHP

    php导出生成word的方法_PHP 本文实例讲述了php导出生成word的方法.分享给大家供大家参考,具体如下: PHP导出word (1)首先,预览html页面,示例化对象,定义要导出的数据(2) ...

  5. springboot实现数据库数据导出生成Excel报表

    一.导入poi依赖 <!-- poi实现excel导入导出--><dependency><groupId>org.apache.poi</groupId> ...

  6. php完美导出word,php导出生成word的方法

    本文实例讲述了php导出生成word的方法.分享给大家供大家参考,具体如下: PHP导出word (1)首先,预览html页面,示例化对象,定义要导出的数据 (2)点击下载页面,给id传值(任何值均可 ...

  7. npoi 将html导出word,使用NPOI将数据导出为word格式里的table

    开发环境:VS2013+MySQL5.5+EF6+NPOI2.0.6 格式:WinForm+CodeFirst PS:vs2013的CodeFirst很方便了啊 CodeFirst方式就不再赘述了. ...

  8. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  9. js将HTML导出生成word文档

    在项目开发中中,遇到将HTML导出生成word文档,刚开始在网上找了很多资料,基本都是jQuery中的插件jquery.wordexport.js,刚开始是不想用这个的,这个要引用另一个插件FileS ...

最新文章

  1. python使用教程视频-Python入门教程视频分享
  2. HBuilderX 连接电脑的模拟器问题
  3. 字符串原样输出程序python_Python格式化字符串(格式化输出)
  4. Eclipse Plug-in Hello world
  5. HDU1231(DP)
  6. 人工智能可控核聚变量子计算机,中国终于实现了可控核聚变
  7. MySQL for Java的SQL注入测试
  8. C++函数使用规范建议
  9. java web编码详解_Java Web 之编解码分析
  10. 使用Python和Numpy进行波士顿房价预测任务(一)【深度学习入门_学习笔记】
  11. Linux ls按时间排列
  12. access百科 pc_Access是什么
  13. 为啥淘宝的商品链接无法分享到微信?
  14. SVN入门必备教程 一看就懂
  15. html设置字段只读,html怎么设置只读
  16. 合并的表格怎么加横线_如何在excel中文字后面加横线
  17. springCloud笔记——微服务介绍
  18. 《2021年度中国计算机视觉人才调研报告》正式发布
  19. 半导体芯片产业无尘车间激光尘埃粒子计数器
  20. 惯性传感器阵列导航模块OSMIUM MIMU4X9C/4X4C介绍

热门文章

  1. while和do-while循环结构
  2. DOM包裹wrap()方法
  3. Mongo客户端MongoVUE的基本使用
  4. AGS Server 10.1 切图工具
  5. 最全的HTML特殊字符集
  6. WinForm立体饼状图实现(附源码示例) 之配餐系统的开发
  7. RoRoWoBlog 开源博客系统介绍
  8. vue 中slot 的具体用法
  9. API网关如何实现对服务下线实时感知
  10. jQuery基础:remove()与 detach()区别