zoukankan      html  css  js  c++  java
  • 【Java】使用CSVUtils生成文件并供下载

     1 package com.msk.ds.logic;
     2 
     3 import java.io.*;
     4 import java.util.List;
     5 
     6 /**
     7  * Created by Administrator on 2016/5/4.
     8  */
     9 public class CSVUtils {
    10 
    11     public static File createCSVFile(List<Object> head, List<List<Object>> dataList, String outPutPath, String filename) {
    12         File csvFile = null;
    13         BufferedWriter csvWtriter = null;
    14         try {
    15             csvFile = new File(outPutPath + File.separator + filename + ".csv");
    16             File parent = csvFile.getParentFile();
    17             if (parent != null && !parent.exists()) {
    18                 parent.mkdirs();
    19             }
    20             csvFile.createNewFile();
    21 
    22             // GB2312使正确读取分隔符","
    23             csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
    24                     csvFile), "UTF-8"), 1024);
    25             // 写入文件头部
    26             writeRow(head, csvWtriter);
    27 
    28             // 写入文件内容
    29             for (List<Object> row : dataList) {
    30                 writeRow(row, csvWtriter);
    31             }
    32             csvWtriter.flush();
    33         } catch (Exception e) {
    34             e.printStackTrace();
    35         } finally {
    36             try {
    37                 csvWtriter.close();
    38             } catch (IOException e) {
    39                 e.printStackTrace();
    40             }
    41         }
    42         return csvFile;
    43     }
    44 
    45 
    46     /**
    47      * 写一行数据方法
    48      *
    49      * @param row
    50      * @param csvWriter
    51      * @throws IOException
    52      */
    53     private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
    54         // 写入文件头部
    55         for (Object data : row) {
    56             StringBuffer sb = new StringBuffer();
    57             String rowStr = sb.append(""").append(data).append("",").toString();
    58             csvWriter.write(rowStr);
    59         }
    60         csvWriter.newLine();
    61     }
    62 }
     1 /**
     2      * 导出CSV数据
     3      * @return 数据
     4      */
     5     @RequestMapping(value = "dataExport",method = RequestMethod.POST)
     6     public @ResponseBody int dataExport(HttpServletResponse response) throws IOException{
     7         List<DsPrintTask> list=sc182211Logic.findDataExport();
     8         // 设置表格头
     9         Object[] head = {"任务编码", "操作码", "阅读码", "品牌名", "等级名"};
    10         List<Object> headList = Arrays.asList(head);
    11         // 设置数据
    12         List<List<Object>> dataList = new ArrayList<List<Object>>();
    13         List<Object> rowList = null;
    14         for (int i = 0; i < list.size(); i++) {
    15             rowList = new ArrayList<Object>();
    16             rowList.add(list.get(i).getPrintTaskId());
    17             rowList.add(list.get(i).getOperateBar());
    18             rowList.add(list.get(i).getReadBar());
    19             rowList.add(list.get(i).getBrandName());
    20             rowList.add(list.get(i).getGradeName());
    21             dataList.add(rowList);
    22         }
    23         String downloadFilePath ="D:/test";
    24         String fileName = "标签列表";
    25         // 导出CSV文件
    26         CSVUtils.createCSVFile(headList, dataList, downloadFilePath, fileName);
    27 
    28 
    29 
    30         response.setHeader("Content-Disposition", "attachment;filename="
    31                     + "liq.csv");
    32         response.setContentType("application/csv;charset=GBK");
    33 
    34         File file = new File("D:/test/标签列表.csv");
    35         InputStream in = new FileInputStream(file);
    36             int len = 0;
    37             byte bytes[] = new byte[1024 * 8];
    38             while ((len = in.read(bytes)) != -1) {
    39                 response.getOutputStream().write(bytes, 0, len);
    40             }
    41             in.close();// 关闭流 ....
    42 
    43         return NumberConst.IntDef.INT_ONE;
    44     }
  • 相关阅读:
    安卓:线性布局
    安卓文件的资源访问
    关于安卓的一些初步认识
    haayaGuardV0---3---手机与pc基于p2p通信
    【无中生有】---13---系统发布
    【无中生有】---12---运维与监控
    【无中生有】---11---服务器集群部署
    【无中生有】---7---分布式消息队列
    使用消息队列的 10 个理由
    【无中生有】---10---API接口日志存储设计与实现设计
  • 原文地址:https://www.cnblogs.com/dflmg/p/5465348.html
Copyright © 2011-2022 走看看