自己写的,亲自测试过的,可以使用!
1.我一开始用Workbook工具读取CSV报错,错误的意思是格式不正确。
2.之后读取csv文件采用CsvReader这个工具,里面的类可以满足一些日常的读取。
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
/**
* 文件全路径+文件名字
* @param filePath
* @return
* @throws IOException
*/
public static List<String[]> readFile(String filePath) throws IOException {
char separator = ',';
//1.创建一个List存放文件内容
List<String[]> csvFileList = new ArrayList<String[]>();
//2.声明一个CsvReader
CsvReader reader = null;
//3.newCsvReader 传入文件,设置编码gbk或者utf-8
//csv行分割符号
reader = new CsvReader(filePath,separator, Charset.forName("gbk"));
//4.跳过表头,不读第一行内容
reader.readHeaders();
//5.读取csv文档内容,一共有多少列
String [] headArray = reader.getHeaders();
System.out.println("文档列长:"+headArray.length);
//6.开始读取文件,while 一行一行读取
while (reader.readRecord()){
//6.1 读取一行内容,打印出来,你发现都是按照","分割的
System.out.println(reader.getRawRecord());
//6.2 读取第一列的内容
System.out.println(reader.get(0));
//6.3 把一行数据 按照","分割,之后存到String数组中
csvFileList.add(reader.getValues());
}
reader.close();
//7.打印list
csvFileList.forEach(arr->{
System.out.println(Arrays.asList(arr));
});
return csvFileList;
}
注意:csv整个文件中,某一行的某一列有数据,则整个csv文件的这一列都算有内容。没填值的话,给你空开。
例如:1,2,,4 或者 1,2,3, 这几种格式,亲自测试一下吧