1. 问题描述
最近在做一个小程序,要求能把查询记录导成excel并供前端下载。
1).导出excel功能使用jxl实现(当然也可以使用功能更强的poi,但小巧的jxl性能更好些)。
2).下载功能却遇到点小问题。
struts配置:
<action name="download" class="com.harmonywisdom.emergency.smsplatform.action.DownloadAction">
<result name="success" type="stream">
<!--设置为excel类型 -->
<param name="contentType">application/vnd.ms-excel;charset=ISO8859-1</param>
<!--下载文件流 -->
<param name="inputName">inputStream</param>
<!--添加参数,即就是下载的名称 -->
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<!--缓存 -->
<param name="bufferSize">4096</param>
</result>
</action>
这里的几个参数都很重要,首先是result的类型是stream, 其次contentType指明excel,接着是action要有getInputStream()方法,下面就是contentDisposition必须有attachment属性,代表是作为附件下载而不是直接打开。filename就是传给action的文件名,通过getInputStream()返回该文件的流。一切都没有问题。
ajax请求
前端页面采用的ajax请求下载,遇到了麻烦,无论get还是post都不行,就是弹不出保存文件对话框,如果浏览器收到了文件流就会自动弹出保存框。这说明浏览器确实没有收到流,F12查看下ajax请求,果然,成功收到了响应,但响应内容都是字符串。呀,ajax接收的内容本来就都会转成字符串(xml或text)的。所以不能采用ajax来请求下载。
2. 解决
很明确,把ajax改成下面即可:
location.href="/app/sms/download.action?fileName=" + data;
或者其他解决办法,比如设置一个<a>标签,href请求action。总之要保证浏览器收到的是流,而不是字符串。
分享到:
相关推荐
struts2导出excel java 导出excel: JXL_excel: 可以直接在elipse下运行的例子 可以直接导出excel文件(包含所需的jar包) CSharpJExcel: 是JXL的官方下载的 包括详细的文档 和jar包
Struts2文件流方式导出下载excel、Txt、image图片,直接返回给浏览器提示下载,不生成临时文件,直接保存在客户端
Struts实时生成Excel文件下载
项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。
poi struts2 Excel导入数据库 用jdbc连的sql server2000 非常简单 一看就能明白怎么个回事 就一张表 3个字段 适合第一次用poi的朋友
struts1 poi Excel批量导入支持xls和xlsx-源码java 有需要的能帮助到
本文档详细介绍了struts2整合apache的jxl导入导出excel表格的方法。包括代码,可以直接使用。
完整代码且集成了ssh2 博文链接:https://wuzhaohuixy-qq-com.iteye.com/blog/713926
把Excel表中的数据读取到list集合中 再对集合进行处理并生成txt文件直接下载,代码运行成功可用
web中使用POI导入导出EXCEL文件的例子 struts1.x的例子,struts2.x可以参考自己修改 1.action的写法 import java.io.*; import java.sql.*; import java.util.ArrayList; import javax.servlet....
程序使用Struts2(SSH即Struts2+Hibernate+Spring)+POI+MySQL实现Excel动态数据导入和导出,程序源码文件附带运行说明
struts2+poi实现excel文件的导出,虽然有很多jxl库实现的方案,而本方案是使用struts2 mvc, apache poi库实现excel的导入导出,文档很详细
Web开发技术,excel导出的详解,对POI导出EXCEL代码实现的详细解释
1. 采用jquery.validate.js实现了提交验证form表单。 2. 采用jquery.form.js实现ajaxForm提交表单或上传文件到服务器。 3. 在struts2的Action通过2种不同的实现方法...5. 下载Excel文件分为2003和2007两种不同格式。
用Struts2+Hibernate做的一个简单的员工、部门增删改查 +文件上传和Excel导出 。无数据库版
NULL 博文链接:https://chaoyi.iteye.com/blog/2174164
首先说明这不是个项目不能直接运行,需要自己集成到自己项目中,文件包括 struts2 Excel的导入和导出。
学习时做的小例子!用到了myeclipse 和spring、 toplink、poi等工具,
此文档提供全面的poi导出excel,对于有这方面需要的朋友有很大的帮助。