status2文件下载(Excel)
做项目的时候遇到了一个下载Excel的小功能,因为之前没有做过,所以搜了很多教程,现在刚刚测试完毕,就把这个记录下来。
图片中 “下载模版” 就是下载Excel的按钮,因为导入是用Excel实现的,所以为了统一,就把一个格式正确的Excel放到了项目中。
前端代码:
html:
<button type="button" class="btn btn-primary btn-sm oemp-privbtn" id="btn2">下载模版</button>
js:
$("#btn2").click(function(){
location.href='${path}/xzxcx/download_DownloadAndExcel';
});
Excel在项目中的位置:
struts.xml中的配置:
<!-- 下载模版 -->
<action name="download_*" class="com.oemp.xzxcx.ZgshMoney.struts2.FileDownloadAction" method="{1}" >
<!-- 处理文件下载时,一定要将返回result的类型设置为stream -->
<result name="down" type="stream">
<!-- 下载文件的类型,如果你不知道是什么格式,可以去 tomcat\conf\web.xml下找 -->
<param name="contentType">application/vnd.ms-excel</param>
<!-- 返回流 excelStream为action中的流变量名称 -->
<param name="inputName">excelStream</param>
<!-- attachment可以设置成下载时,是否出现个下载提示框,或者直接下载之类的。fileName指定生成的文件名字为action中变量-->
<param name="contentDisposition">
attachment;filename=${excelFileName}
</param>
<param name="bufferSize">1024</param>
</result>
</action>
Action:
下面这张图是下载的方法,这里我做的是 先读取项目中Excel的前两行(因为第一行是属性名称,第二行是数据),然后创建新的Excel,并且把上面获取的数据赋给这个新的Excel。最后把文件存到流中。
看到这里代码就写完了。
如果有更好的办法请大家踊跃评论发言。