SpringMVC实现查询结果下载为CSV文件
来源:互联网 发布:瓦楞纸箱设计软件 编辑:程序博客网 时间:2024/05/17 12:20
SpringMVC实现下载查询结果为CSV文件
文件下载
SpringMVC提供了一个ResponseEntity类型,使用它可以很方便地定义返回的HttpHeaders和HttpStatus。以下代码演示文件的下载功能:
Controller类的映射路径为data
@Controller@RequestMapping(value = "data")public class DataController {
controllor类实现下载的方法路径映射为download:(/data/download)
@RequestMapping(value = "/download") public ResponseEntity<byte[]> d(@RequestParam("company") String Company, @RequestParam("league") String League, @RequestParam("year") String Year, @RequestParam("match") String Match, HttpServletRequest request, Model model) throws Exception { String filename = "download.csv"; List<Data> datas = this.getDataList(Company, League, Year, Match); ByteArrayOutputStream baos= new CsvUtil().process(datas); baos.close(); HttpHeaders headers = new HttpHeaders(); //下载显示的文件名,解决中文名称乱码问题 String downloadFielName = new String(filename.getBytes("UTF-8"),"UTF-8"); //通知浏览器以attachment(下载方式)打开图片 headers.setContentDispositionFormData("attachment", downloadFielName); //application/octet-stream : 二进制流数据(最常见的文件下载)。 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED); }
其中,getDataList是从数据库查询结果的方法。
<重点1>方法的关键在于,输出流为ByteArrayOutputStream ,他是从CsvUtil工具类process()里得到的流,那是我们自己写的工具类,以及process方法,我们稍后再看。
别忘了关闭流!
后部分配置声明了HTTPHeader,已说明。
<重点2>返回值,ResponseEntity
public ByteArrayOutputStream process(List<Data> datalist)throws IOException{ ByteArrayOutputStream output = new ByteArrayOutputStream(); CsvWriter csvWriter = new CsvWriter(output, ',', Charset.forName("UTF-8")); String[] tableheader = {"Company", "League", "Year", "Match", "Win", "Draw", "Lose", "Rate", "UpdateTime"}; csvWriter.writeRecord(tableheader); for (Data data : datalist) { csvWriter.writeRecord(this.getData(data)); } csvWriter.close(); output.close(); return output; }
将传入数据写入,我们来看看重载的构造方法:
重载的write方法:
图片====
这需要导入jar包(添加依赖):
===
然后,只需将前台页面跳转至(/data/download),即可下载。
参考资料:
http://blog.csdn.net/qian_ch/article/details/69258465
http://www.itkeyword.com/doc/514194264116375232/apache-java-io
https://stackoverflow.com/questions/18275043/spring-download-file-and-redirect
https://stackoverflow.com/questions/46036255/spring-download-excel-file
https://stackoverflow.com/questions/17177303/spring-download-response-as-a-file
- SpringMVC实现查询结果下载为CSV文件
- 便捷输出sql查询结果为TXT/CSV文件
- Oracle 查询结果导出为csv格式
- Oracle 查询结果导出为csv格式
- PostgresSQL将查询结果写入CSV文件
- Java导出数据库查询结果为excel和csv的简易实现
- php 实现csv文件下载
- SpringMVC 实现文件下载
- SpringMVC实现文件下载
- SpringMVC实现文件下载
- SpringMVC实现文件下载
- SpringMVC实现文件下载
- mysql查询结果导出文件 excel 或者csv
- 用CSV框架导出csv文件实现下载(jsp)
- Java 导出CSV文件及实现web下载CSV
- coffeescript实现nodejs前端csv文件下载
- Servlet实现导出下载csv文件
- struts2实现对查询结果的下载
- GUI1
- 常用数学符号的 LaTeX 表示方法
- UVa 712 S-Trees
- mysql explain 的type解释
- Android 7.1 应用快捷方式(ShortcutManager的使用)
- SpringMVC实现查询结果下载为CSV文件
- [python]leetcode(105). Construct Binary Tree from Preorder and Inorder Traversal
- 直接插入、冒泡、快速、简单选择、堆、归并排序算法
- JVM内存区域和内存溢出异常
- 3301: [USACO2011 Feb] Cow Line 康托展开
- HTML5拖放
- 属性动画的几种实现方式
- hdu 5428(质因数分解)
- 重定向和请求转发的区别