目标:web开发过程中,由于需要在controller类中添加Excel下载功能,以便将数据库中的数据查询出来以后,插入到一个新创建的Excel表格中,并且在点击超链接按钮以后,在当前页面下载该Excel。
步骤:常规步骤,网上一搜一大堆;由于本文章用于博主自己的问题记录,因此不详细描述;
问题描述:后台能够按照格式要求生成一个Excel文件(.xls格式),并且数据库查询出的数据能够插入到Excel文件中,最后该Excel文件也能够按照指定路径保存到服务器的某处;但是,浏览器中无法弹出下载Excel文件的提示框,Excel无法下载。
解决方法:由于仔细地检查了好几遍后台程序,包括对“response”的set,downloadFile方法的逻辑检查,都没有发现问题。最后经过同事的提醒,发现是前台页面的问题。
之前的前台页面超链接的书写方式是:
<a href="javascript:void(0)" onclick="download()">
点击下载
</a>
修改之后的超链接书写方式是:
<a href="javascript:download()">点击下载</a>
不能使用“onclick”属性,而是直接用href调用JavaScript函数;
另还有一中写法:
<a href="${pageContext.request.contextPath}/XXXXX请求路径/XXXXX.controller">点击下载</a>
直接在href后面写请求的后台controller路径,也可以达到目的。
做上述修改以后,清理项目和Tomcat,重新启动,可以下载Excel文件了,大功告成。