自己寫的,親自測試過的,可以使用!
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, 這幾種格式,親自測試一下吧