首页 > 技术文章 > JavaCSV之读CSV文件

xiaomingzaixian 2018-10-05 16:10 原文

Java在进行数据处理,有时候难免有进行CSV文件的操作,这里采用了JavaCSV读CSV文件。

1.准备工作

(1)第三方包库下载地址:https://sourceforge.net/projects/javacsv

(2)相关文档:http://javacsv.sourceforge.net

2.使用简单的读操作

(1)引入javacsv包相应的类

import com.csvreader.CsvReader;

(2)创建文件路径

String file = "src/com/test/csv/test.csv"; // 注意路径,这里是相对路径

(3)创建CSV读对象

// 创建CSV读对象(文件路径,分隔符,编码格式)
CsvReader csvReader = new CsvReader(file, ',', Charset.forName("UTF-8"));

(4)设置标题(非常重要),可以理解为把第一行设置为标题,如果不设置,csvReader.readRecord()将从标题行开始读取,因此有关标题、列的函数将无法使用,如getHeaders()、get("字段名")

csvReader.readHeaders();

(5)读取

while (csvReader.readRecord()){
    // 读一整行
    System.out.println(csvReader.getRawRecord());
    // 读某一列
    System.out.println(csvReader.get("id"));
}

 (6)关闭

// 关闭
 csvReader.close();

 

csv文件(test.csv):

测试(demo.java):

 1 package com.test.csv;
 2 
 3 import com.csvreader.CsvReader;
 4 import java.io.IOException;
 5 import java.nio.charset.Charset;
 6 
 7 public class demo {
 8     public static void main(String[] args) {
 9         String file = "src/com/test/csv/test.csv";
10       
11         try {
12             // 创建CSV读对象(文件路径,分隔符,编码格式)
13             CsvReader csvReader = new CsvReader(file, ',', Charset.forName("UTF-8"));
14 
15             // 跳过表头 如果需要表头的话,这句可以忽略
16             csvReader.readHeaders(); // 可以理解为把第一行设置为标题,如果不设置,将无法使用getHeaders()、get("id")           
17 
18             while (csvReader.readRecord()){
19                 // 读一整行
20                 System.out.println(csvReader.getRawRecord());
21               
22             }
23              
24             // 关闭
25             csvReader.close();
26 
27         } catch (IOException e) {
28             e.printStackTrace();
29         }
30 
31     }
32 }    

 

 截图:

 

3.相关函数

查看:http://javacsv.sourceforge.net/

(1)获取标题,返回时String数组

// 1.获取标题,返回时String数组
csvReader.getHeaders();

// 输出
for(String s : headerList){
     System.out.println(s);
}

(2)获取列数

// 获取列数
csvReader.getHeaderCount();

 

 

 

 

 



推荐阅读