需要用到的jar包有freemarker-2.3.18.jar,freemarker-util-0.0.1-SNAPSHOT.jar,jxl-2.6.10.jar,jxl-report-1.0.jar,这些网上都有,可以去找

来吧,直接上干货。excel模板如图:

很容易理解,需要填充的内容用EL表达式替代即可。

上代码吧:

                // 生成ExcelReportEnginer enginer = new ReportEnginer();String modelPath = request.getServletContext().getRealPath("/")+ "/static/model/验收单模板.xls"; //模板的路径InputStream inputStream = new FileInputStream(new File(modelPath));

//下载有两种方式,1.先生成excel存到服务器,再从服务器下载下来 2.直接导出excel

先来第一种:

//第一步,先存到服务器

                String path = "";//这个是服务器上保存excel的路径File dir = new File(path);if (!dir.exists()) {// 判断路径是否存在dir.mkdirs(); // 可以在不存在的目录中创建文件夹}path += "test.xls"; // excel的文件名OutputStream outputStream = new FileOutputStream(new File(path));try {enginer.excute(inputStream, map, outputStream);} catch (Exception e) {e.printStackTrace();}inputStream.close();outputStream.close();

//第二步,下载

try {// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = file.getName();
// 设置响应头,控制浏览器下载该文件
response.setHeader("content-disposition", "attachment;filename="
URLEncoder.encode(filename, "UTF-8"));
// 读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(pdfPath);
// 创建输出流
OutputStream out = response.getOutputStream();
// 创建缓冲区
byte buffer[] = new byte[1024];
int len = 0;
// 循环将输入流中的内容读取到缓冲区当中
while ((len = in.read(buffer)) > 0) {
// 输出缓冲区的内容到浏览器,实现文件下载
out.write(buffer, 0, len);
}
// 关闭文件输入流
in.close();
// 关闭输出流
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}

至此,第一种就搞定了.第二种:

ReportEnginer enginer = new ReportEnginer();
InputStream inputStream = new FileInputStream(new File(excelTempletePath));
response.setContentType("application/vnd.ms-excel");
OutputStream outputStream = response.getOutputStream();
enginer.excute(inputStream, map, outputStream);
inputStream.close();
outputStream.close();

里面map的内容如下:

{    "C_ID": 9,    "C_NUM": "YS1709040001",    "C_NAME": "在线办公平台",    "C_CODE": "HT0010",    "C_AMOUNT": 700000,    "C_DATE": "2017-05-24",    "C_APPLICANTNAME": "Test",    "C_DEPT": "南天门",    "C_STATE": "14",    "C_SUPPLIER": "供应商",    "C_BUYNUMBER": " ",    "eqList": [        {            "E_ID": 9,            "E_NAME": "笔记本电脑",            "E_ITEMTYPE": "通用设备、专业设备",            "E_ITEM": "其它计算机设备及软件",            "E_MODEL": "型号",            "E_TECHNICALPARAMETERS": "技术参数",            "E_NOTE": "备注",            "E_FACTORY": "生产厂家",            "E_BRAND": "品牌",            "E_UNITPRICE": 6000,            "E_NUM": 2,            "TOTALPRICE": 12000,            "ROWNUM": 1,            "C_BUYNUMBER": " ",            "P_ISIMPORT": "是",            "installList": [                {                    "L_SERIAL_NUM": 1,                    "L_FACTORY_NO": "154131",                    "L_INSTALLATIONLOCATION": "111"                },                {                    "L_SERIAL_NUM": 2,                    "L_FACTORY_NO": "1541444",                    "L_INSTALLATIONLOCATION": "222"                }            ]        }    ],    "A_DELIVERYDATE": "2017-09-04",    "A_DELIVERYADDRESS": "丰盛的覅",    "A_ACCEPTANCEDATE": "2017-09-05",    "A_ACCEPTANCEADDRESS": "第三方",    "acceptExpertList": [        {            "E_ID": 0,            "E_NAME": "test",            "E_IDCARD": "test",            "E_UNIT": "电子工程学院",            "E_POSITION": "fsdgfdsgdf",            "E_TITLE": "aa1",            "E_CONTACTPHONE": "02885013835",            "E_PHONE": "18583929312",            "E_EAMIL": "18688888888@qq.com",            "E_ADDRESS": "成都",            "E_PROFESSIONAL": "在不安也很近黄金时代",            "B_NAME": "校内",            "ROWNUM": 1        },        {            "E_ID": 1,            "E_NAME": "pingzong",            "E_IDCARD": "pingzong",            "E_UNIT": "电子工程学院",            "E_POSITION": "fe",            "E_TITLE": "fes",            "E_CONTACTPHONE": "028-85465853",            "E_PHONE": "13161519203",            "E_EAMIL": "efw@qq.com",            "E_ADDRESS": "fewfaw",            "E_PROFESSIONAL": "fafeaf",            "B_NAME": "校内",            "ROWNUM": 2        }    ]}

就是这些了,上一个最后导出来excel的图:

     

Java根据模板生成excel并下载相关推荐

  1. Java根据模板生成excel文件【Java】【EasyExcel】【xls】

    Background 前两天客户反应对数据导出的文件格式不太满意,然后给了我们模板,让我们按照模板导出数据.于是一通修改(excel数据量有限制他们也不管,之前我们给的csv格式). Java操作ex ...

  2. java通过poi生成excel并下载出现文件打不开、文件格式和文件扩展名无效问题的分析与解决

    需求描述: 需要完成这样一个功能:后台通过poi生成excle,前台点击按钮可直接下载. 代码逻辑(核心部分): 第一种: public String generatePlanExcel(@Reque ...

  3. Java在服务器端生成Excel并下载到本地

    后台代码: @ResponseBody@RequestMapping(value = "export")public AjaxJson exportFile(Office offi ...

  4. java使用jxl生成excel表格,jsp使用js下载excel文件xls

    java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...

  5. python excel处理框架_django框架基于模板 生成 excel(xls) 文件操作示例

    本文实例讲述了django框架基于模板 生成 excel(xls) 文件操作.分享给大家供大家参考,具体如下: 生成Excel 文件,很多人会采用一些开源的库来实现,比如python 自带 csv 库 ...

  6. NPOI 菜鸟实践行之根据指定的模板生成Excel 2003格式的文件 (一)

    感谢群里的各位朋友的指导和教学,感谢Tony Qu的热心指导,感谢阿修罗兄提供的Excelhelper类 谈谈个人对Excel的理解,结合NPOI,个人水平一般般,菜鸟一只 Excel 打开后,分为s ...

  7. JAVA 根据模板生成doc文件

    JAVA 根据模板生成doc文件 需求 根据模板生成对应的doc文档,文档内容动态填充. 实现 1.将doc模板转换为ftl文件,放入项目中 1.1 首先将模板另存为xml文件 1.2 更改xml文件 ...

  8. springmvc下解析模板生成Excel ,用freemarker

    工具类解析模板生成Excel public class TemplateParseUtil {/** * 解析模板生成Excel * @param templateDir 模板目录 * @param ...

  9. java使用模板导出Excel表格

    java使用模板导出Excel表格 文章目录 java使用模板导出Excel表格 模板示例 一.引入依赖 二.使用步骤 1.添加工具类 2.导出Excel 模板示例 一.引入依赖 <depend ...

  10. ftl模板导出excel_使用freemark模板生成excel

    1.背景 文件操作中导入导出功能在项目中十分常见,这里我们要聊的是导出excel这一功能.老话题常谈常新,小编给大家介绍使用freemark模板的方式导出excel. 2.实现 Demo中采用spri ...

最新文章

  1. 在实践中我遇到stompjs, websocket和nginx的问题与总结
  2. HttpServletRequest看这篇文章就够了
  3. C语言学习之有一个分数序列2/1、3/2、5/3、8/5、13/8、21/13,……求出这个数列的前20项之和。
  4. android 辅助功能_辅助功能简介
  5. lucene自动补全_使用自动机的Lucene新的邻近查询
  6. python - Flask 基础(1)
  7. pythonmkdir语法错误_Python mkdir一个有难度的问题
  8. php将数组转成字符串的,php怎样将数组转化成字符串
  9. 微信中文件为什么不能另存?
  10. 将java 文件夹里面的.java 文件 拷贝到temp文件夹下,并且修改后缀名为.txt
  11. 微信小程序如何在地图选择地址并返回经纬度
  12. vediojs m3u8 视频清晰度切换
  13. 揭秘!一个无线电黑客的玩具
  14. 风无定,人无常,人生如浮萍,聚散两茫茫——元组类型、字典类型的内置方法,第九天
  15. 视频分割怎么使用?别担心,好用方法来啦
  16. C语言学习笔记——根据二叉树的后序和中序遍历序列,求这棵树的先序和层次遍历序列
  17. 谁能做到电商平台的公平性,谁就是下一任电商老大?
  18. set the request's mode to 'no-cors' to fetch the resource with CORS disa
  19. IDEA 创建package包
  20. Java小农养成记第四天

热门文章

  1. OpenCV 人脸识别、图片相似度检测
  2. html语言个人网页,个人网页介绍家乡纯html
  3. 化验室计算机分级管理,[欧盟法规] 欧盟受控实验室之《计算机化系统验证》摒弃了GAMP5的分类? (1之3)...
  4. day30 JavaWeb阶段——HTML基础(源码+w3cschool菜鸟教程)
  5. Win10系统离线安装可选功能XPS查看器(XPS Viewer)的详细说明(修订版)
  6. 便捷、高效、智能—从运维视角看星环科技大数据基础平台TDH
  7. Andriod动画效果总结以及帧动画实现
  8. 不确定度在线计算_气相色谱质谱法快速测定毒死蜱、联苯菊酯不确定度评定
  9. 想提取嵌入视频文件的字幕流么?一条命令帮你解决|脚本工具系列
  10. 前端网页设计必逛的六个宝藏网站(非常值得收藏)