1. 필요사항(maven dependency추가)
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9.0</version>
</dependency>
2. 간단한 java CSV파일 파싱 샘플 소스
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
/**
* CSV파일을 읽어서 파싱
* - apache commons-csv를 이용해서 CSV파일을 파싱: https://mvnrepository.com/artifact/org.apache.commons/commons-csv/1.9.0
*
* @author 엄승하
*/
@Slf4j
public class CsvFileParser {
public static void main(String[] args) throws IOException {
//파싱할 CSV파일
File targetFile = new File("CSV파일 경로");
int sampleDataRow = 0; //샘플 데이터 row번호
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(targetFile))) {
CSVParser parser = CSVFormat.EXCEL.withFirstRecordAsHeader().withQuote('"').parse(bufferedReader); //엑셀타입 & 쌍따옴표 escape처리
List<CSVRecord> records = parser.getRecords();
log.debug("\nCSV 헤더\n\t{}\n데이터 샘플\n\t{}", parser.getHeaderMap(), records.get(sampleDataRow));
//샘플 데이터의 필드 데이터를 개행하여 출력
// for (String field : records.get(sampleDataRow)) {
// System.out.println(field);
// }
log.info("헤더 필드 갯수 :{} | {}번째 row의 데이터 필드 갯수:{}", parser.getHeaderMap().size(), sampleDataRow, records.get(sampleDataRow).size());
log.info("헤더: {} ", parser.getHeaderMap());
}
}
}
'JAVA > Java 일반' 카테고리의 다른 글
java timeZone변경(PST->KST 또는 PDT->KST) 샘플 소스 (0) | 2021.11.16 |
---|---|
CSV파일을 읽어서 파싱하여 DB(Mysql)에 저장하는 프로그램 샘플 (0) | 2021.11.12 |
java 2글자국가코드_및_국가명_리스트조회 프로그램 (0) | 2021.08.05 |
mysql + java + JPA + querydsl 성능개선 관련 몇 가지 내용 (0) | 2021.05.01 |
java stream filter를 이용한 중복 제거 방법(샘플) (0) | 2021.04.06 |