csv文件是分隔文件,如果使用java的io流來寫,比較麻煩,這裡為大家提供一個javacsv的jar包,這個很方便操作csv文件。
下載地址:https://pan.baidu.com/s/1i46ErFB
那如何使用呢?
只要看看以下一個例子,您一下就明白了。
1 import com.csvreader.CsvReader;
2 import com.csvreader.CsvWriter;
3 import org.junit.Test;
4
5 import java.io.IOException;
6 import java.nio.charset.Charset;
7
8 /**
9 * Created by javalittleman on 2016/8/18.
10 */
11 public class TestCVS {
12 /**
13 * CSV導出
14 *
15 * @throws Exception
16 */
17 @Test
18 public void exportCsv() throws IOException {
19 String srcCSV = "F:/cnt_programa.csv";
20 String targetFile = "F:/test.csv";
21 CsvReader reader = new CsvReader(srcCSV, ',', Charset.forName("UTF-8"));
22 CsvWriter write =new CsvWriter(targetFile,',',Charset.forName("UTF-8"));
23 //各字段以引號標記
24 write.setForceQualifier(true);
25 //路過表頭
26 //r.readHeaders();
27 //逐條讀取記錄,直至讀完
28 String[] header = {};
29 while (reader.readRecord()) {
30 //把頭保存起來
31 if (reader.getCurrentRecord()==0){
32 header = reader.getValues();
33 }
34 //獲取當前記錄位置
35 System.out.print(reader.getCurrentRecord() + ".");
36 //讀取一條記錄
37 System.out.println(reader.getRawRecord());
38 String[] tmp = {reader.getValues()[0],reader.getValues()[1]};
39 //修改記錄,並只寫入第一個字段和第二字段
40 if (!header[1].equals(tmp[1]) && ("".equals(tmp[1])||tmp==null)){
41 tmp[1]="空";
42 write.writeRecord(tmp);
43 }else{
44 write.writeRecord(new String[]{reader.getValues()[0],reader.getValues()[1]});
45 }
46 }
47 reader.close();
48 write.close();
49 }
50 }
cnt_programa.csv文件:
"id","pid","no","serial","name","createtime" "100000","","No100000","","公司新聞","2016/8/23 17:12:09" "100001","","No100001","","熱點資訊","2016/8/24 17:12:36" "100046","100001","No100046","1","銀行動態","2016/8/1 10:36:31" "100052","100001","No100052","2","法律法規","2016/8/2 20:39:10" "100088","100001","No100088","3","專業文庫","2016/8/5 19:05:47"
test.csv
"id","pid" "100000","空" "100001","空" "100046","100001" "100052","100001" "100088","100001"