模塊介紹 鹿鳖?
fast-csv是一款開源軟件包,主要用來處理csv格式的文本數(shù)據(jù)壮莹,就是一種有固定格式的文本文件翅帜。fast-csv是一個流式的推式解析器,即收到一段數(shù)據(jù)就解析一段數(shù)據(jù)命满,不需要收完全部的數(shù)據(jù)才開始解析涝滴。推式就是每一行,每一個字段都全部都解析出來胶台,不論你最后用了還是不用歼疮。
如何使用?
在pom.xml中添加依賴信息:
<dependency>
<groupId>de.siegmar</groupId>
<artifactId>fastcsv</artifactId>
<version>1.0.3</version>
</dependency>
代碼工具類實現(xiàn):
import de.siegmar.fastcsv.reader.CsvContainer;
import de.siegmar.fastcsv.reader.CsvParser;
import de.siegmar.fastcsv.reader.CsvReader;
import de.siegmar.fastcsv.reader.CsvRow;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author : Jone
* @date : 10:18 2021/11/11 0011
* @function :
*/
@Component
public class CsvRead {
public static void csvReadOperation(String path) {
try{
// File file = new File("F:\\Excel\\customer-info.csv");
File file = new File(path);
CsvReader csvReader = new CsvReader();
csvReader.setContainsHeader(true);
// CsvContainer csv = csvReader.read(file, StandardCharsets.UTF_8);
// 將解決中文亂碼問題
CsvContainer csv = csvReader.read(file, Charset.forName("GBK"));
// csv.getRowCount() 記錄行數(shù)量
// csv.getHeader().size() 記錄 記錄列數(shù)量
// csv.getHeader().get(0) 編號
// csv.getHeader().get(1) 時間
for (CsvRow row : csv.getRows()) {
System.out.println("=======");
System.out.println("First column of line: " + row.getField("編號"));
System.out.println("First column of line: " + row.getField("時間"));
System.out.println("First column of line: " + row.getField("句子"));
System.out.println("First column of line: " + row.getField("博客"));
System.out.println("First column of line: " + row.getField("關(guān)鍵詞"));
System.out.println("First column of line: " + row.getField("話題"));
}
}catch (Exception e){e.printStackTrace();}
}
public static void csvReadData(String path) {
// 初始化對象
Map<String, Object> map = new HashMap<String, Object>();
List<Map<String, Object>> list = new ArrayList<>();
try {
File file = new File(path);
CsvReader csvReader = new CsvReader();
csvReader.setContainsHeader(true);
// CsvContainer csv = csvReader.read(file, StandardCharsets.UTF_8);
// 將解決中文亂碼問題
CsvContainer csv = csvReader.read(file, Charset.forName("GBK"));
// csv.getRowCount() 記錄行數(shù)量
// csv.getHeader().size() 記錄 記錄列數(shù)量
// csv.getHeader().get(0) 編號
// csv.getHeader().get(1) 時間
for (int i = 0; i < csv.getRowCount(); i++) {
for (int j = 0; j < csv.getHeader().size(); j++) {
map.put(csv.getHeader().get(j), csv.getRow(i).getField(csv.getHeader().get(j)));
}
list.add(map);
}
System.out.println(list);
// 格式轉(zhuǎn)換
String result = list.toString();
// 打印轉(zhuǎn)換格式后的數(shù)據(jù)信息
System.out.println(result);
}catch (Exception e) {
e.printStackTrace();
}
}
// 獲取csv 的行
public static void analysisData(String path){
List<String> list = new ArrayList<>();
try {
File file = new File(path);
CsvReader csvReader = new CsvReader();
csvReader.setContainsHeader(true);
// CsvContainer csv = csvReader.read(file, StandardCharsets.UTF_8);
// 將解決中文亂碼問題
CsvContainer csv = csvReader.read(file, Charset.forName("GBK"));
// csv.getRowCount() 記錄行數(shù)量
// csv.getHeader().size() 記錄 記錄列數(shù)量
// csv.getHeader().get(0) 編號
// csv.getHeader().get(1) 時間
for (int j = 0; j < csv.getHeader().size(); j++) {
list.add(csv.getHeader().get(j));
}
System.out.println(list);
// 格式轉(zhuǎn)換
String result = list.toString();
// 打印轉(zhuǎn)換格式后的數(shù)據(jù)信息
System.out.println(result);
}catch (Exception e) {
e.printStackTrace();
}
}
}