程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java導出生成csv文件,java導出csv

java導出生成csv文件,java導出csv

編輯:JAVA綜合教程

java導出生成csv文件,java導出csv


首先我們需要對csv文件有基礎的認識,csv文件類似excel,可以使用excel打開,但是csv文件的本質是逗號分隔的,對比如下圖:

txt中顯示:

修改文件後綴為csv後顯示如下:

在java中我們一般使用poi操作excel,導入,導出都可以,但是poi很消耗內存,尤其在導出時,這個時候我們其實可以選擇導出生成csv文件,因為其跟文本差不多,所以效率很高。

簡單寫了一個實現類,代碼如下:

 1 /**
 2      *             
 3      *                 導出生成csv格式的文件
 4      * @author         ccg
 5      * @param          titles csv格式頭文
 6      * @param          propertys 需要導出的數據實體的屬性,注意與title一一對應
 7      * @param          list 需要導出的對象集合
 8      * @return
 9      * @throws         IOException
10      * Created         2017年1月5日 上午10:51:44
11      * @throws         IllegalAccessException 
12      * @throws         IllegalArgumentException 
13      */
14     public static <T> String exportCsv(String[] titles,String[] propertys,List<T> list) throws IOException, IllegalArgumentException, IllegalAccessException{
15         File file = new File("d:\\test.csv");
16         //構建輸出流,同時指定編碼
17         OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(file), "gbk");
18         
19         //csv文件是逗號分隔,除第一個外,每次寫入一個單元格數據後需要輸入逗號
20         for(String title : titles){
21             ow.write(title);
22             ow.write(",");
23         }
24         //寫完文件頭後換行
25         ow.write("\r\n");
26         //寫內容
27         for(Object obj : list){
28             //利用反射獲取所有字段
29             Field[] fields = obj.getClass().getDeclaredFields();
30             for(String property : propertys){
31                 for(Field field : fields){
32                     //設置字段可見性
33                     field.setAccessible(true); 
34                     if(property.equals(field.getName())){
35                         ow.write(field.get(obj).toString());
36                         ow.write(",");
37                         continue;
38                     }
39                 }
40             }
41             //寫完一行換行
42             ow.write("\r\n");
43         }
44         ow.flush();
45         ow.close();
46         return "0";
47     }

測試類如下:

 1 public void test() throws IOException, IllegalArgumentException, IllegalAccessException{
 2         String[] titles = new String[]{"ID","姓名"};
 3         String[] propertys = new String[]{"id","name"};
 4         List<User> list = new ArrayList<User>();
 5         User user;
 6         user = new User();
 7         user.setId(1L);
 8         user.setName("張三");
 9         list.add(user);
10         user = new User();
11         user.setId(2L);
12         user.setName("李四");
13         list.add(user);
14         CsvUtil.getInstance().exportCsv(titles,propertys, list);
15     }

導出後生成的文件跟上圖一樣,算是一個封裝吧,傳入表頭,以及表頭對應實體的屬性即可,注意要一一對應。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved