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 搞定 。 有問題歡迎提問

偶遇晨光原創

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM