一、csv文件
逗號(hào)分隔值(Comma-Separated Values,CSV,有時(shí)也稱為字符分隔值,因?yàn)榉指糇址部梢圆皇嵌禾?hào)),其文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)。純文本意味著該文件是一個(gè)字符序列,不含必須像二進(jìn)制數(shù)字那樣被解讀的數(shù)據(jù)。CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號(hào)或制表符。通常,所有記錄都有完全相同的字段序列。
CSV是一種通用的、相對(duì)簡(jiǎn)單的文件格式,被用戶、商業(yè)和科學(xué)廣泛應(yīng)用。最廣泛的應(yīng)用是在程序之間轉(zhuǎn)移表格數(shù)據(jù),而這些程序本身是在不兼容的格式上進(jìn)行操作的(往往是私有的和/或無規(guī)范的格式)。因?yàn)榇罅砍绦蚨贾С帜撤NCSV變體,至少是作為一種可選擇的輸入/輸出格式。
“CSV”泛指具有以下特征的任何文件:
二、示例
相關(guān)代碼如下:
1 package com.test.Excel; 2 3 import java.io.BufferedWriter; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.OutputStreamWriter; 8 import java.net.URLEncoder; 9 import java.util.ArrayList; 10 import java.util.Arrays; 11 import java.util.Date; 12 import java.util.List; 13 14 import org.junit.Test; 15 16 /** 17 * 創(chuàng)建CSV文件 18 */ 19 public class CSVCrate { 20 21 /** 22 * 創(chuàng)建CSV文件 23 */ 24 @Test 25 public void createCSV() { 26 27 // 表格頭 28 Object[] head = { "客戶姓名", "證件類型", "日期", }; 29 List<Object> headList = Arrays.asList(head); 30 31 //數(shù)據(jù) 32 List<List<Object>> dataList = new ArrayList<List<Object>>(); 33 List<Object> rowList = null; 34 for (int i = 0; i < 100; i++) { 35 rowList = new ArrayList<Object>(); 36 rowList.add("張三" + i); 37 rowList.add("263834194" + i); 38 rowList.add(new Date()); 39 dataList.add(rowList); 40 } 41 42 String fileName = "testCSV.csv";//文件名稱 43 String filePath = "c:/test/"; //文件路徑 44 45 File csvFile = null; 46 BufferedWriter csvWtriter = null; 47 try { 48 csvFile = new File(filePath + fileName); 49 File parent = csvFile.getParentFile(); 50 if (parent != null && !parent.exists()) { 51 parent.mkdirs(); 52 } 53 csvFile.createNewFile(); 54 55 // GB2312使正確讀取分隔符"," 56 csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024); 57 58 //文件下載,使用如下代碼 59 // response.setContentType("application/csv;charset=gb18030"); 60 // response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); 61 // ServletOutputStream out = response.getOutputStream(); 62 // csvWtriter = new BufferedWriter(new OutputStreamWriter(out, "GB2312"), 1024); 63 64 int num = headList.size() / 2; 65 StringBuffer buffer = new StringBuffer(); 66 for (int i = 0; i < num; i++) { 67 buffer.append(" ,"); 68 } 69 csvWtriter.write(buffer.toString() + fileName + buffer.toString()); 70 csvWtriter.newLine(); 71 72 // 寫入文件頭部 73 writeRow(headList, csvWtriter); 74 75 // 寫入文件內(nèi)容 76 for (List<Object> row : dataList) { 77 writeRow(row, csvWtriter); 78 } 79 csvWtriter.flush(); 80 } catch (Exception e) { 81 e.PRintStackTrace(); 82 } finally { 83 try { 84 csvWtriter.close(); 85 } catch (IOException e) { 86 e.printStackTrace(); 87 } 88 } 89 } 90 91 /** 92 * 寫一行數(shù)據(jù) 93 * @param row 數(shù)據(jù)列表 94 * @param csvWriter 95 * @throws IOException 96 */ 97 private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException { 98 for (Object data : row) { 99 StringBuffer sb = new StringBuffer();100 String rowStr = sb.append("/"").append(data).append("/",").toString();101 csvWriter.write(rowStr);102 }103 csvWriter.newLine();104 }105 }
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注