스프링 poi 활용 방법
poi 와 엑셀
- 스프링이 엑셀을 추출하거나 생성할 때 poi라는 라이브러리를 주로 사용한다.
- poi는 활용하기 다소 까다롭다. 왜냐하면 1) 엑셀 자체의 구조가 복잡하고 2) 데이타 타입 변경의 문제가 있다.
엑셀의 구조
- 파일 -> sheet -> row -> cell
- 엑셀을 추출할 때 위의 순서로 추출한다.
Workbook workbook = WorkbookFactory.create(file); // 파일을 가져온다.
Sheet sheet = workbook.getSheetAt(i); // 시트를 가져온다.
Row row = sheet.getRow(j); // row를 가져온다.
Cell cell = row.getCell(k);// 셀의 값을 가져온다
엑셀의 데이타 타입
- 엑셀에는 다양한 데이타 타입이 있다. 자바와 유사하지만 또 다르다. 구체적인 내용은 굳이 알 필요가 없다. 나는 간단하게 아래처럼 처리한다. 그리고 참고로 나는 무조건 String 으로 변경했다.
- 아래는 모든 데이타를 String으로 변경하였다. 데이타베이스나 다른 파일과의 데이터 통신 과정에서 나는 개인적으로 가능하면 String으로 처리하는게 가장 좋다고 생각한다. 그게 안전하고 빠르고 고민할 거리가 적어진다.
public Optional<String> parseCellIntoString(Cell cell) {
String value = "";
if (cell != null) {
// 타입 별로 내용을 읽는다
switch (cell.getCellType()) {
case NUMERIC:
double numericCellValue = cell.getNumericCellValue();
if (numericCellValue == 0) {
return Optional.empty();
}
value = String.valueOf((int)numericCellValue);
break;
case STRING:
value = cell.getStringCellValue();
if (value.isEmpty()||value.equals("")) {
return Optional.empty();
}
break;
default:
return Optional.empty();
}
}
value = value.trim();
if(value.equals(""))
return Optional.empty();
return Optional.of(value);
}
의존성
- 나의 경우 아래의 의존성을 사용한다.
- poi 의 엔진도 다양하고 버전이나 엔진에 따라 이넘 등 조금씩 다르다.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
Author And Source
이 문제에 관하여(스프링 poi 활용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@infoqoch/스프링-poi-활용-방법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)