<Maven 라이브러리> apache.poi 이용해서 엑셀 파일 읽어오기
2021. 9. 14. 22:11ㆍJAVA
반응형
엑셀 파일을 Maven의 오픈 라이브러리 apache.poi를 이용해서 읽어오기.
1.Pom.xml 파일의 의존성에
poi와 poi-ooxml을 추가해준다
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>
라고 한다.
2. Maven 의존성 업데이트 한번 해주고
3. 자바 클래스를 하나 만들고 아래의 내용을 이용한다
import java.io.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelEx {
public static void main(String[] args){
try {
//파일 읽어오기
FileInputStream fin = new FileInputStream("엑셀 파일 경로");
// 해당 엑셀 파일의 시트 가져오기
XSSFWorkbook workbook = new XSSFWorkbook(fin);
//시트 갯수
int seetNum = workbook.getNumberOfSheets();
//시트갯수 만큼 for문
for(int i=0; i<seetNum; i++){
//순서대로 하나씩 받아와줌
XSSFSheet sheet = workbook.getSheetAt(i);
//시트 아래에 있는 행의 갯수
int rows = sheet.getPhysicalNumberOfRows();
//행 갯수 만큼 만큼 for문
for(int j=0; j<rows; j++){
//한 행 씩 받아옴
XSSFRow row = sheet.getRow(j);
//행 안에 있는 셀의 갯수
int cells = row.getPhysicalNumberOfCells();
for(int k=0; k<cells; k++){
//순서대로 받아옴
XSSFCell cell = row.getCell(k);
//스트링으로 받아오기 위한 준비
String value = "";
//셀의 내용이 없다면 건너뛰고
if(cell == null){
continue;
}else{
//스위치문을 이용해, 셀의 타입에 따라 가져오는 방법이 다름.
switch (cell.getCellType()){
case FORMULA:
value = cell.getCellFormula();
break;
case NUMERIC:
value = cell.getNumericCellValue()+"";
break;
case STRING:
value = cell.getStringCellValue()+"";
break;
case BLANK:
value = cell.getBooleanCellValue()+"";
case ERROR:
value = cell.getErrorCellValue()+"";
break;
}
}
//받아온 값을 뿌림.
System.out.println(j +"번 행, " + k +"번 열 값 : "+ value);
}
}
}
//예외 처리
}catch (IOException e){
System.out.println("Error");
}
}
}
대략적으로 정리해보자면,
1. FileInputStream으로 엑셀 파일 가져오고,
2. workbook 으로 엑셀 파일 밑에 시트 가져오고,
3. 시트로부터 행 가져오고
4. 행으로 부터 셀 하나씩 가져와서
5. 비어있다면, 건너뛰고,
6. 값이 있다면 스트링으로 변환해서 출력,
7. 이후 모든 값을 받아올때까지 반복.
'JAVA' 카테고리의 다른 글
[spring boot]이미지 업로드 (0) | 2022.03.21 |
---|---|
추상 클래스와 인터페이스 (0) | 2022.03.14 |
[JPA]REST API 만들기 (0) | 2022.03.01 |
OracleDB - JAVA (0) | 2021.09.22 |