JXL生成Excel,并提供下载(2:提供下载)
实现效果:
项目中使用JXL生成Excel,使生成的Excel可以让用户下载,如下图
一、生成Excel
二、提供下载
实现思路:
1、页面使用form表单提交方式(Ajax提交方式,我这里不行)
2、后台使用HttpServletResponse响应前台form表单的请求(我这里使用Servlet类响应,比较古老,^_^)
3、
(1)生成的Excel表,先保存到服务器(JXL的write()方法)
(2)DataInputStream以流的方式读取这个Excel表
(3)DataOutputStream以流的方式输出,用户即可下载
(4)删除第一步保存的Excel表
PS:虽然我也不想这么麻烦,但是浪费了一天时间后,貌似只有这种方法
实现代码:
1、前台:提交表单
JS:
downloadTemplate('exportExcelServlet.exportExcelServlet','filename',id);
表单:
/*** js创建form表单的提交(我的页面没写form表单),采用post方式提交(这里不用改)* @param action action映射地址:web.xml配置了Servlet响应类* @param type: 名称* @param value:表单传给后台的值*/ function downloadTemplate(action, type, value){var form = document.createElement('form');document.body.appendChild(form);form.style.display = "none";form.action = action;form.id = 'excel';form.method = 'post';var newElement = document.createElement("input"); newElement.setAttribute("type","hidden"); newElement.name = type;newElement.value = value;form.appendChild(newElement); form.submit(); }
2、web.xml:配置响应表单的Servlet
/*** web.xml:提交Form表单后,响应的处理类* 响应以.exportExcelServlet结尾的Action* @param type: 名称* @param value:表单传给后台的值*/ <servlet><servlet-name>exportExcelServlet</servlet-name><servlet-class>Servlet类所在路径.ExportExcelServlet</servlet-class><load-on-startup>3</load-on-startup> </servlet><servlet-mapping><servlet-name>exportExcelServlet</servlet-name><url-pattern>*.exportExcelServlet</url-pattern> </servlet-mapping>
3、Servlet
public class ExportExcelServlet extends HttpServlet {/*** serialVersionUID*/private static final long serialVersionUID = -4541729035831587727L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//form表单的value传的值Long id = Long.valueOf(req.getParameter("filename"));//调用生成Excel的函数,它生成Excel保存到服务器 exportExcel(id);try{// 清空输出流 resp.reset();//获取上面生成Excel的路径String filePath = "路径";//设置编码方式resp.setCharacterEncoding("UTF-8"); // 设定输出文件头resp.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("自定义下载保存的名称","UTF-8"));resp.setContentType("application/ms-excel");// 流的方式读取保存到服务器的ExcelDataInputStream in = new DataInputStream(new FileInputStream(new File(filePath)));// 流的方式输出到浏览器,可下载OutputStream out = resp.getOutputStream();int bytes = 0;byte[] bufferOut = new byte[1024]; while ((bytes = in.read(bufferOut)) != -1) { out.write(bufferOut, 0, bytes); }out.close();in.close();//删除刚才保存到服务器的路径的Excel RemoveDirectoryUtil.delSingleFile(filePath);} catch(Exception e){e.printStackTrace();}}}
JXL生成Excel,并提供下载(2:提供下载)相关推荐
- java使用jxl生成excel表格,jsp使用js下载excel文件xls
java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...
- JXL生成EXCEL时单元格设置为数值却展示货币或自定义的问题处理
前言: 以下内容为个人见解,勿喷,欢迎有更好解决方法的大佬指点 问题起源: 最近项目中有一个这样的需求:根据后台数据生成Excel后转存到服务器上供用户进行下载.这本来是一个比较常见的需求,不存在什么 ...
- 打印系列 —— 利用jxl生成Excel
jxl的安装: 主要就是将jxl的包放在WEB-INF的classes下面(如果下载到的是.jar文件,就放在lib下面).别忘了将jxl包中的common文件夹也放在WEB-INF下面. jxl的使 ...
- exls下载后显示jsp_jsp利用POI直接生成Excel并在页面提示打开下载
java中导出Excel有两个组件可以使用,一个是jxl,一个是POI,我这里用的是POI.导出是可以在服务器上生成文件,然后下载,也可以利用输出流直接在网页 中弹出对话框提示用户保存或下载.生成文件 ...
- poi jxl 生成EXCEL 报表
http://www.iteye.com/topic/611329 前2天后台系统需要生成报表,正好抽时间复习了一下之前做过的JAVA生成EXCEL,下面介绍POI 和JXL 生成报表的2种方式. 1 ...
- Java后台通过jxl生成Excel表格
这里封装了一个工具类,将对象的list集合解析生成表格,只要按照参数要求传参就好了. 工具类代码如下: package com.hd.erpreport.utils;import java.io.Fi ...
- android jxl生成excel,Android Jxl读写Excel
Android Studio 依赖compile 'net.sourceforge.jexcelapi:jxl:2.6.12' 本测试在Exlipse中, 由于Jxl的跨平台性.创建Excel表/** ...
- Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)
这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 先试用Response.WriteFile的方法: FileInfo fi = new FileInfo(excelFile); ...
- 【原】Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...
这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 生成Excel文件的方法,见:[原].Net创建Excel文件(插入数据.修改格式.生成图表)的方法 先试用Response.W ...
最新文章
- vb.net webclient 网络目录是否存在_牛眼IPO | 怡合达IPO申请待审核 产品目录被指涉嫌侵权...
- DevExpress 中 在做全选的全消功能的时候 加快效率
- LeetCode OJ:Construct Binary Tree from Preorder and Inorder Traversal(从前序以及中序遍历结果中构造二叉树)...
- Angular Route数据结构里常用字段使用方法一览
- MongoDB(4)--MongoDB服务的启动
- 基于python的文件加密传输_基于python实现文件加密功能
- python time localtimeq获取准确时间_python的内置模块time和datetime的方法详解以及使用(python内的time和datetime时间格式)...
- 用Java语言编写的特殊算法
- 用php写出显示客户端ip与服务器ip的代码.,PHP面试题答案
- 【AD】mm,mile,inch+电流大小同线宽关系
- 查看window重启日志
- python paramiko_Python3之paramiko模块
- keras利用flow_from_directoryt自己构建数据集
- pdf照片显示正常打印时被翻转_你确定你会打印准考证了?89%的人都不会!
- PubYun动态域名
- 不同方式实现IP访问限制
- YOLOv5中autoanchor.py的def metric(k)的r = wh[:, None] / k[None]的理解
- 电路模电数电课程中卡诺图知识点(包括化简原则和步骤)
- 步进电机应用c语言程序设计实例,51单片机调节步进电机应用C语言程序设计
- 程序员必备的6款工具软件,炒鸡实用!