엑셀에는 두 가지 확장자가 있습니다.
.xls : 97-03 통합문서로 과거의 엑셀 파일. HSSF~
.xlsx : 요즘 엑셀 문서의 확장자명. XSSF~, SXSSF~(대용량처리)
gradle
implementation 'org.apache.poi:poi:5.2.2'
implementation 'org.apache.poi:poi-ooxml:5.2.2'
import
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
저는 Amazos S3에서 inputStream으로 가져와 파일을 읽는 경우입니다.
(MultipartFile을 InputStream 으로 가져와도 됩니다.)
코드
Workbook workbook = null;
if(resourcePath.endsWith(".xlsx")){
workbook = new XSSFWorkbook(file);
}else if(resourcePath.endsWith(".xls")){
workbook = new HSSFWorkbook(file);
}else{
throw new RuntimeException("file type not matched");
}
if(workbook == null){
throw new RuntimeException("no data in file");
}
// 해당 인덱스에 있는 시트를 반환.
Sheet sheet = workbook.getSheetAt(0);
// 모든 행의 개수를 반환.
int rows = sheet.getPhysicalNumberOfRows();
// 지정된 행 번호에 해당하는 row 데이터를 반환.
Row row = sheet.getRow(rowIdx);
// 지정된 셀 번호에 해당하는 Cell 값을 반환.
Cell cell = row.getCell(1);
// 셀의 값을 String타입으로 반환.
String cellText = cell.getStringCellValue();
위 메서드들을 조합하며 엑셀 파일의 셀 데이터를 읽거나 쓸 수 있습니다.
'Spring & Spring Boot' 카테고리의 다른 글
[Spring&SpringBoot] ChatGPT Spring에서 사용하기 (11) | 2023.05.30 |
---|---|
[Spring&Spring Boot] @Transaction, rollback이 안될 때가 있다?? (0) | 2023.03.28 |
[SpringBoot] LocalDateTime 받기(클라이언트Json→서버) (0) | 2023.01.18 |
[Swagger] DTO에서 parameter 숨기기 (0) | 2023.01.16 |
[Mybatis] Mybatis에서 inner class 사용법. (0) | 2023.01.05 |