CSV文件使用javacsv写出,并下载



[java]  view plain  copy
  1. <dependency>  
  2. <span style="white-space:pre">      </span>    <groupId>net.sourceforge.javacsv</groupId>  
  3. <span style="white-space:pre">      </span>    <artifactId>javacsv</artifactId>  
  4. <span style="white-space:pre">      </span>    <version>2.0</version>  
  5. <span style="white-space:pre">      </span></dependency>    
[java]  view plain  copy
  1. @Test  
  2.     public void write(){  
  3.     try {  
  4.              // 创建CSV写对象  
  5.     List<Student> ls=new ArrayList<Student>();  
  6.              for (int i = 0; i <1000000; i++) {  
  7.             Student s=new Student();  
  8.             s.setName("小帅"+i);  
  9.             s.setAge(i);  
  10.             s.setScore("100"+i);  
  11.             s.setSex("男"+i);  
  12.             ls.add(s);  
  13. }  
  14.              //写入临时文件  
  15.              File tempFile = File.createTempFile("vehicle"".csv");  
  16.              CsvWriter csvWriter = new CsvWriter(tempFile.getCanonicalPath(),',', Charset.forName("UTF-8"));  
  17.              // 写表头  
  18.              long s= System.currentTimeMillis();  
  19.              System.err.println();  
  20.              String[] headers = {"姓名","年龄","编号","性别"};  
  21.              csvWriter.writeRecord(headers);  
  22.              for (Student stu : ls) {  
  23.         csvWriter.write(stu.getName());  
  24.         csvWriter.write(stu.getAge()+"");  
  25.         csvWriter.write(stu.getScore());  
  26.         csvWriter.write(stu.getSex());  
  27.         csvWriter.endRecord();  
  28.         }  
  29.              csvWriter.close();  
  30.              long e=System.currentTimeMillis();  
  31.   
  32.              System.err.println(e-s);;  
  33.   
  34.    /** 
  35.     * 写入csv结束,写出流 
  36.     */  
  37.    java.io.OutputStream out = getResponse.getOutputStream();    
  38.    byte[] b = new byte[10240];  
  39.    java.io.File fileLoad = new java.io.File(tempFile.getCanonicalPath());    
  40.    getResponse.reset();  
  41.    getResponse.setContentType("application/csv");    
  42.    getResponse.setHeader("content-disposition""attachment; filename=vehicleModel.csv");    
  43.     long fileLength = fileLoad.length();    
  44.     String length1 = String.valueOf(fileLength);    
  45.     getResponse.setHeader("Content_Length", length1);    
  46.     java.io.FileInputStream in = new java.io.FileInputStream(fileLoad);    
  47.     int n;    
  48.     while ((n = in.read(b)) != -1) {    
  49.      out.write(b, 0, n); //每次写入out1024字节   
  50.     }    
  51.      in.close();    
  52.      out.close();   
  53.   
  54.          } catch (IOException e) {  
  55.              e.printStackTrace();  
  56.          }  
  57.     }  

网上找太多,眼逗看累了。自己写个简单的 


参考文章:http://blog.csdn.net/loongshawn/article/details/53423121

ps:version我本地只能用2.0;以流的形式写出游览器不用做操作文件会直接下载;

2:因为csvWriter不提供类似Poi的写入流  workbook.write(out);故在csv写入数据完之后,要手动把文件写入流;

[java]  view plain  copy
  1. <dependency>  
  2. <span style="white-space:pre">      </span>    <groupId>net.sourceforge.javacsv</groupId>  
  3. <span style="white-space:pre">      </span>    <artifactId>javacsv</artifactId>  
  4. <span style="white-space:pre">      </span>    <version>2.0</version>  
  5. <span style="white-space:pre">      </span></dependency>    
[java]  view plain  copy
  1. @Test  
  2.     public void write(){  
  3.     try {  
  4.              // 创建CSV写对象  
  5.     List<Student> ls=new ArrayList<Student>();  
  6.              for (int i = 0; i <1000000; i++) {  
  7.             Student s=new Student();  
  8.             s.setName("小帅"+i);  
  9.             s.setAge(i);  
  10.             s.setScore("100"+i);  
  11.             s.setSex("男"+i);  
  12.             ls.add(s);  
  13. }  
  14.              //写入临时文件  
  15.              File tempFile = File.createTempFile("vehicle"".csv");  
  16.              CsvWriter csvWriter = new CsvWriter(tempFile.getCanonicalPath(),',', Charset.forName("UTF-8"));  
  17.              // 写表头  
  18.              long s= System.currentTimeMillis();  
  19.              System.err.println();  
  20.              String[] headers = {"姓名","年龄","编号","性别"};  
  21.              csvWriter.writeRecord(headers);  
  22.              for (Student stu : ls) {  
  23.         csvWriter.write(stu.getName());  
  24.         csvWriter.write(stu.getAge()+"");  
  25.         csvWriter.write(stu.getScore());  
  26.         csvWriter.write(stu.getSex());  
  27.         csvWriter.endRecord();  
  28.         }  
  29.              csvWriter.close();  
  30.              long e=System.currentTimeMillis();  
  31.   
  32.              System.err.println(e-s);;  
  33.   
  34.    /** 
  35.     * 写入csv结束,写出流 
  36.     */  
  37.    java.io.OutputStream out = getResponse.getOutputStream();    
  38.    byte[] b = new byte[10240];  
  39.    java.io.File fileLoad = new java.io.File(tempFile.getCanonicalPath());    
  40.    getResponse.reset();  
  41.    getResponse.setContentType("application/csv");    
  42.    getResponse.setHeader("content-disposition""attachment; filename=vehicleModel.csv");    
  43.     long fileLength = fileLoad.length();    
  44.     String length1 = String.valueOf(fileLength);    
  45.     getResponse.setHeader("Content_Length", length1);    
  46.     java.io.FileInputStream in = new java.io.FileInputStream(fileLoad);    
  47.     int n;    
  48.     while ((n = in.read(b)) != -1) {    
  49.      out.write(b, 0, n); //每次写入out1024字节   
  50.     }    
  51.      in.close();    
  52.      out.close();   
  53.   
  54.          } catch (IOException e) {  
  55.              e.printStackTrace();  
  56.          }  
  57.     }  

网上找太多,眼逗看累了。自己写个简单的 


参考文章:http://blog.csdn.net/loongshawn/article/details/53423121

ps:version我本地只能用2.0;以流的形式写出游览器不用做操作文件会直接下载;

2:因为csvWriter不提供类似Poi的写入流  workbook.write(out);故在csv写入数据完之后,要手动把文件写入流;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值