springMVC导出 CSV案例

导出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 搞定 。 有问题欢迎提问

偶遇晨光原创

时间: 2024-08-04 20:46:43

springMVC导出 CSV案例的相关文章

mysql导出csv

原网页 http://www.web-jia.com/view.php?a=12 今天有的需求要一些数据,现在这套系统用了mysql数据库了,没有sqlserver导出数据那么简单了 要数据想到最简单的当然是导出csv了 查了一下有outfile 可以用稍微设置一下就可以了还是挺不错的 select * from player into outfile 'd:/out.csv' fields terminated by ',' optionally enclosed by '' lines te

PHP 和 JS 导入导出csv表格(上)

CSV简介 在开发后台管理系统的时候,几乎无可避免的会遇到需要导入导出Excel表格的需求.csv也是表格的一种,其中文名为"逗号分隔符文件".在Excel中打开如下图左边所示,在记事本打开如下图右边所示: 再看包含特殊字符的表格 与xls或xlsx 表格相类似,CSV文件也是用来表示二维表格.而不同的是: 1.CSV是一种纯文本文件,任何编辑器都能打开并读取它:xls(x)是专用的二进制文件,要用表格软件才能正常打开,否则乱码: 2.CSV的体积很小,比如上面的表格内容,csv只有几

thinkphp导出csv文件

导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this->display(),最后细心看到think_page_trace这样的字样,恍然大悟,是页面的跟踪日志,这个默认是会输出来的.最后在方法后面加了一个exit结束就好了,下面是代码: 1.IndexController.class.php <?php namespace Home\Controller; use Think\Con

php使用ajax导出CSV或者EXCEl(thinkphp)方法

首先我强烈推荐看到这篇文章的你将导出文件设置为csv格式的文件 实际测试导出csv文件的速度是excel文件的10几倍左右 首先我先介绍csv文件的导出的方法: 如果你单纯是在数据导出界面上通过用户点击生成csv或者excel按钮通过服务器往浏览器输出excel或者csv 如果数据量小的化可以使用这样的方法(这种方法无法使用ajax)网上百度一下一堆介绍 这里有较为详细的方法介绍 和源码 我这里介绍的是 当数据量比较大时比如生成excel或者csv文件可能需要 几分钟这时候我们需要在用户点击生成

项目--简单导出CSV文件

//导出 protected void BtnOutPut_Click(object sender, EventArgs e) { //角色 InitialRoles(); DataTable dt = DBClass.GetDataTable(string.Format(@"SELECT * FROM {0} Order By SN desc", View(Where))); StringWriter sw = new StringWriter(); //4S店不能看到总部价格等相关

mysqldump 导出CSV文件

mysqldump -h 127.0.0.1 -u root -p database table -t -T /home/mysql/ --fields-enclosed-by=\" --fields-terminated-by=, -w 增加条件判断语句 老外的一个处理mysql异常的错误,明天整理一下 http://icesquare.com/wordpress/mysql-starting-mysql-error-the-server-quit-without-updating-pid-f

java utf8字符 导出csv 文件的乱码问题。

在输出的格式为UTF-8的格式,但是打开CSV文件一直为乱码,后来参考了这里的代码,搞定了乱码问题,原文请参考:http://hbase.iteye.com/blog/1172200 private static void writeBcp( ) throws IOException { //Create bcp file if not exist File bcpFile = new File("test.csv"); //bcpFile.delete(); byte[] bom =

CSVHelper 导出CSV 格式

public class CSVHelper { System.Windows.Forms.SaveFileDialog saveFileDialog1;//保存 private string header = string.Empty;//标题 /// <summary> /// 初始化打印设置 /// </summary> /// <param name="printID"></param> protected void InitEx

php 导入/导出 csv 文件

php 导入/导出 csv 文件 1.简介 项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用原生PHP,实现了CSV格式数据的导入和导出功能.并解决相关乱码问题. 将xls转换成csv的文本格式,然后再用php分析这个文件,和PHP分析文本没有什么区别.优点:跨平台,效率比较高.可以读写.缺点:只能直接使用csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化.一个文件只有一个SHEET. 2.相关函数介绍 2.1