목차
Maven 추가
pom.xml 에 dependencies를 추가
<dependencies>
<!-- 엑셀 읽기 필수 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.0</version>
</dependency>
<!-- 엑셀 읽기 필수 -->
<!-- 엑셀 읽기 에러 처리 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
<!-- 엑셀 읽기 에러 처리 -->
</dependencies>
Load Maven Changes (Ctrl + Shift + O)
Maven 변경사항을 적용
엑셀 경로 (프로젝트 최상위)
엑셀 읽어오기
FileInputStream file = new FileInputStream(new File("example.xlsx"));
FileInputStream 클래스는 파일을 바이트 단위로 입력받아 출력할 수 있다.
워크북 생성, 시트 지정
Workbook workbook = WorkbookFactory.create(file);
Sheet sheet = workbook.getSheetAt(0);
읽어온 엑셀 파일을 워크북에 지정하고 작업할 시트를 정한다.
작업할 시트가 여러개라면 0, 1, 2... 지정할 수 있다.
행별로 각 셀 읽기 (다중 반복문)
for (Row row : sheet) {
for (Cell cell : row) {
// 셀 타입별 데이터 읽기 추가
}
}
첫 번째 for문 : 지정한 시트에서 데이터가 포함된 모든 행 반복
두 번째 for문 : 선택된 행의 모든 셀 반복
데이터 타입별로 출력하기
switch (cell.getCellType()) {
case NUMERIC: // 숫자타입
if (DateUtil.isCellDateFormatted(cell)) { // 날짜형식
Date dateValue = cell.getDateCellValue();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = dateFormat.format(dateValue);
System.out.print(formattedDate + "\t");
} else { // 날짜형식을 제외한 숫자 형식
double numericValue = cell.getNumericCellValue();
if (numericValue == Math.floor(numericValue)) {
int intValue = (int) numericValue;
System.out.print(intValue + "\t");
} else {
System.out.print(numericValue + "\t");
}
}
break;
case STRING: // 문자타입
String stringValue = cell.getStringCellValue();
System.out.print(stringValue + "\t");
break;
case BOOLEAN: // Boolean타입
boolean booleanValue = cell.getBooleanCellValue();
System.out.print(booleanValue + "\t");
break;
case FORMULA: // 수식타입
String formulaValue = cell.getCellFormula();
System.out.print(formulaValue + "\t");
break;
case ERROR:
case _NONE:
case BLANK:
default:
System.out.print("\t");
break;
}
엑셀 원본
1 | 2 | 3 | 4 | 5 |
A | B | C | D | E |
지민 | 진 | RM | 뷔 | 정국 |
35.6 | 32.6 | 25.9 | 45.8 | 25.1 |
2023-10-10 | 2023-10-18 | 2023-10-28 | 2023-11-06 | 2023-11-15 |
출력형태
주의!
데이터를 타입별로 분기를 주지 않고 그냥 출력하면 다음과 같은 결과가 나온다.
for (Row row : sheet) {
for (Cell cell : row) {
System.out.print(cell.toString() + "\t");
}
System.out.println();
}
file.close();
마치며...
데스크톱에 있는 엑셀 파일로 작업을 하기 위해서는 처음 엑셀을 읽어오는 부분에서 데스크톱의 경로를 적어주면 된다.
FileInputStream file = new FileInputStream(new File("C:\\Users\\admin\\Desktop\\example.xlsx"));
잘못된 내용이 있다면 댓글 부탁드립니다!
'프로그래밍 > Java' 카테고리의 다른 글
[Java] 날씨 정보 가져오기(위도/경도 포함) (0) | 2023.12.20 |
---|---|
[Java] MVC 패턴의 이해 (0) | 2023.11.17 |
[Java] 다형성의 이해와 활용 (0) | 2023.11.15 |
[Java] 추상클래스(abstract)와 인터페이스(interface) (0) | 2023.11.14 |