导出csv

第一步 Controller类里调用

OrderParamsVo 传入的参数
orderService.findBuyCSV 查询到要导出的信息
 1      /**
 2      * 购买订单CSV
 3      * OrderParamsVo 传入的参数
 4      */
 5     @RequestMapping("findBuyCSV")
 6     @ResponseBody
 7     public JsonResult findBuyCSV(OrderParamsVo params, HttpServletResponse response) {
 8         List<Map<String, Object>> dataList=null;
 9         Validator.getInstance().validate(params);
10         List<OrderBo> orderBos = orderService.findBuyCSV(params);// 查询到要导出的信息
11         if (orderBos.size() == 0) {
12             JsonResult.buildFailedResult("无数据导出");
13         }
14         String sTitle = "投资日期,订单号,姓名,购买产品,金额,状态";
15         String fName = "buywater_";
16         String mapKey = "createDate,no,realname,productName,money,state";
17         dataList = new ArrayList<>();
18         Map<String, Object> map = null;
19         for (OrderBo order : orderBos) {
20             map = new HashMap<String, Object>();
21             map.put("createDate", DateFormatUtils.format(order.getCreateDate(), "yyyy/MM/dd HH:mm"));
22             map.put("no", order.getNo());
23             map.put("realname", order.getUserName());
24             map.put("productName", order.getProductName());
25             map.put("money", order.getMoney());
26             map.put("state", order.getState());
27
28             dataList.add(map);
29         }
30         try (final OutputStream os = response.getOutputStream()) {
31             ExportUtil.responseSetProperties(fName, response);
32             ExportUtil.doExport(dataList, sTitle, mapKey, os);
33             return null;
34
35         } catch (Exception e) {
36             logger.error("购买CSV失败", e);
37
38         }
39         return JsonResult.buildFailedResult("数据导出出错");
40     }            

第二步:ExportUtil 类 (公用方法) 关键

 1 package com.util;
 2
 3 import java.io.OutputStream;
 4 import java.io.UnsupportedEncodingException;
 5 import java.net.URLEncoder;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Date;
 8 import java.util.List;
 9 import java.util.Map;
10
11 import javax.servlet.http.HttpServletResponse;
12
13 import org.apache.commons.lang3.time.DateFormatUtils;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 public class ExportUtil {
18     private static final Logger logger = LoggerFactory.getLogger(ExportUtil.class);
19     /** CSV文件列分隔符 */
20     private static final String CSV_COLUMN_SEPARATOR = ",";
21
22     /** CSV文件列分隔符 */
23     private static final String CSV_RN = "\r\n";
24
25     /**
26      *
27      * @param dataList 集合数据
28      * @param colNames 表头部数据
29      * @param mapKey 查找的对应数据
30      * @param response 返回结果
31      */
32     public static boolean doExport(List<Map<String, Object>> dataList, String colNames, String mapKey, OutputStream os) {
33         try {
34             StringBuffer buf = new StringBuffer();
35
36             String[] colNamesArr = null;
37             String[] mapKeyArr = null;
38
39             colNamesArr = colNames.split(",");
40             mapKeyArr = mapKey.split(",");
41
42             // 完成数据csv文件的封装
43             // 输出列头
44             for (int i = 0; i < colNamesArr.length; i++) {
45                 buf.append(colNamesArr[i]).append(CSV_COLUMN_SEPARATOR);
46             }
47             buf.append(CSV_RN);
48
49             if (null != dataList) { // 输出数据
50                 for (int i = 0; i < dataList.size(); i++) {
51                     for (int j = 0; j < mapKeyArr.length; j++) {
52                         buf.append(dataList.get(i).get(mapKeyArr[j])).append(CSV_COLUMN_SEPARATOR);
53                     }
54                     buf.append(CSV_RN);
55                 }
56             }
57             // 写出响应
58             os.write(buf.toString().getBytes("GBK"));
59             os.flush();
60             return true;
61         } catch (Exception e) {
62             logger.error("doExport错误...", e);
63         }
64         return false;
65     }
66
67     /**
68      * @throws UnsupportedEncodingException
69      *
70      *             setHeader
71      */
72     public static void responseSetProperties(String fileName, HttpServletResponse response) throws UnsupportedEncodingException {
73         // 设置文件后缀
74         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
75         String fn = fileName + sdf.format(new Date()).toString() + ".csv";
76         // 读取字符编码
77         String utf = "UTF-8";
78
79         // 设置响应
80         response.setContentType("application/ms-txt.numberformat:@");
81         response.setCharacterEncoding(utf);
82         response.setHeader("Pragma", "public");
83         response.setHeader("Cache-Control", "max-age=30");
84         response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fn, utf));
85     }
86
87 }

导出csv 搞定 。 有问题欢迎提问

偶遇晨光原创

转载于:https://www.cnblogs.com/chenyq/p/5179623.html

springMVC导出 CSV案例相关推荐

  1. 一篇文章介绍JavaScript 导出 .csv文件

    案例代码如下 <!DOCTYPE html> <html lang="en"> ​ <head><meta charset="U ...

  2. DataSet导出CSV格式(ASP.NET,C#)

    DataSet导出CSV格式(ASP.NET,C#)   作者:Not MSN:notking@hotmail.com Email:nots@sohu.com   本文引用下面的 Microsoft ...

  3. mysql导出csv数据_mysql 导出 csv数据命令

    mysql 导出 csv数据命令 导出 select field1,field2,field3 from tablename into outfile '/home/output1.csv' fiel ...

  4. plsql developer导出csv乱码问题

    最近导出csv时出现乱码 问题 自己摸索找到两种解决办法 方法 1 导出csv格式文件 新建excel文件 比如 a.xls excel软件打开 选择菜单数据 -导入外部数据  unicode默认下一 ...

  5. java 导出csv 格式,java导出csv格式文件的方法

    这篇文章主要为大家详细介绍了java导出csv格式文件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 导出csv格式文件的本质是导出以逗号为分隔的文本数据 imp ...

  6. Oracle 导出CSV、导出大数据

    第一步:创建导出CSV语句 --创建导出语句 CREATE OR REPLACE PROCEDURE SQL_TO_CSV --名称可以自定义(记住导出时使用) (P_QUERY IN VARCHAR ...

  7. Mysql 导入导出csv 中文乱码问题的解决方法

    导出csv: select t1.stid,t1.cateNodeId,t2.name,t1.name from (select p.stid,p.cateNodeId,r.name from Res ...

  8. Java导入导出CSV文件

    场景:导入导出CSV文件 1.CSVUtils类 package com.delta.gddx;import java.io.BufferedReader; import java.io.Buffer ...

  9. MongoDB导出csv格式数据

    第一步: 在cmd中进入mongodb的安装目录下的bin文件夹 C:\Users\zzz>cd C:\Program Files\MongoDB\Server\4.0\bin 第二步: 从Mo ...

最新文章

  1. 大厂项目是如何死掉的?太过真实!
  2. 系统集成3月9日作业
  3. 2019 ICPC 南昌 K. Tree(树上启发式合并,平衡树 treap)
  4. LaTeX入门第三集!LaTeX的几个应用!
  5. 德语语言文学考研c1,2015-2016同济大学德语语言文学初试考研经验(下)
  6. 面试前需要准备的五个步骤
  7. java isempty_Java ArrayDeque isEmpty()方法与示例
  8. mysql41 sphinx_抛弃mysql模糊查询,使用sphinx做专业索引
  9. R语言数据可视化---交互式图表recharts包
  10. IOS-设置NavigationBar的背景及字体颜色
  11. 编译器之词法分析器(Lexical Analyzer)
  12. 如何放大缩小地图 和 移动拖动 地图 (一张的那种,厂区地图非世界地图)
  13. Excel-甘特图制作
  14. vue函数定义的多种写法
  15. 安全管理体系升级 迈动互联获得ISO国际认证
  16. 大一计算机在线测试,计算机在线测试
  17. 显卡 1050Ti pytorch 安装
  18. 每日一道leetcode(python)77. 组合
  19. 删除Windows11和WIN10桌面图标小箭头
  20. 驭电之道-用示波器测量电阻的伏安特性曲线 模电实验 示波器 波形

热门文章

  1. 草稿 listview控件切换大小图标
  2. django-索引1909
  3. javascript-流程控制-循环-分支-三元运算符
  4. ssh_exchange_identification: Connection closed by remote host解决方法
  5. mount命令详解及常见问题汇总
  6. ansible常用基础命令整合
  7. 关于Struts2中的值栈与OGNL表达式
  8. iOS音频播放 (二):AudioSession 转
  9. Cocoa依赖包管理工具
  10. 什么样的前端框架才是一个好框架