본문 바로가기
개발언어/JAVA

[JAVA] 자바 POI 를 이용하여 엑셀 파일 읽기/ POI 라이브러리 사용법

by 코딩 시그널 2020. 10. 3.
반응형

이전 시간에 만든 엑셀 파일을  자바 프로그램을 이용하여 읽는 예제를 구현하도록 하겠습니다.

poi 라이브러리에 대한 설명, 자바로 엑셀 다운로드 예제를 참고하실 분은 아래의 링크를 참고해주세요

 

[JAVA] 자바 POI 를 이용하여 엑셀 다운로드/ 엑셀 읽기 (1)

아파치 Poi Api를 사용하여 마이크로소프트사의 엑셀 파일(xls, xlsx)을 읽고 쓰는 예제를 구현하겠습니다. 아파치 POI(Apache POI)란? 아파치 소프트웨어 재단에서 만든 라이브러리로 마이크로소프트 �

junghn.tistory.com

 

[JAVA] 자바 POI 를 이용하여 엑셀 다운로드/ 엑셀 읽기 (2)

poi 라이브러리를 이용하여 간단한 엑셀 다운로드 프로그램을 만들어 보겠습니다. poi 라이브러리에 대한 설명은 아래의 링크를 참조해 주세요. [JAVA] 자바 POI 를 이용하여 엑셀 다운로드/ 엑셀 읽

junghn.tistory.com

pom.xml 설정

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi</artifactId>
	<version>3.7</version>
</dependency>    
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml</artifactId>
	<version>3.7</version>
</dependency>

소스

소스의 대한 설명은 주석으로 대신하겠습니다.

package ExcelPackage;

import java.io.FileInputStream;
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 ExcelReadTest {
	public static void main(String[] args) throws Exception{
	    try {
	    	// 경로에 있는 파일을 읽
	        FileInputStream file = new FileInputStream("/Users/hihi/excelDownTest.xlsx");
	        XSSFWorkbook workbook = new XSSFWorkbook(file);
	
	        int rowNo = 0;
	        int cellIndex = 0;
	        
	        XSSFSheet sheet = workbook.getSheetAt(0); // 0 번째 시트를 가져온다 
	        										  // 만약 시트가 여러개 인 경우 for 문을 이용하여 각각의 시트를 가져온다
	        int rows = sheet.getPhysicalNumberOfRows(); // 사용자가 입력한 엑셀 Row수를 가져온다
	        for(rowNo = 0; rowNo < rows; rowNo++){
	            XSSFRow row = sheet.getRow(rowNo);
	            if(row != null){
	                int cells = row.getPhysicalNumberOfCells(); // 해당 Row에 사용자가 입력한 셀의 수를 가져온다
	                for(cellIndex = 0; cellIndex <= cells; cellIndex++){  
	                    XSSFCell cell = row.getCell(cellIndex); // 셀의 값을 가져온다	        
	                    String value = "";	                    
	                    if(cell == null){ // 빈 셀 체크 
	                        continue;
	                    }else{
	                        // 타입 별로 내용을 읽는다
	                        switch (cell.getCellType()){
	                        case XSSFCell.CELL_TYPE_FORMULA:
	                            value = cell.getCellFormula();
	                            break;
	                        case XSSFCell.CELL_TYPE_NUMERIC:
	                            value = cell.getNumericCellValue() + "";
	                            break;
	                        case XSSFCell.CELL_TYPE_STRING:
	                            value = cell.getStringCellValue() + "";
	                            break;
	                        case XSSFCell.CELL_TYPE_BLANK:
	                            value = cell.getBooleanCellValue() + "";
	                            break;
	                        case XSSFCell.CELL_TYPE_ERROR:
	                            value = cell.getErrorCellValue() + "";
	                            break;
	                        }
	                    }
	                    System.out.println( rowNo + "번 행 : " + cellIndex + "번 열 값은: " + value);
	                }
	            }
	        }
	    }catch(Exception e) {
    		e.printStackTrace();
    	}
	}
}

 결과

 

댓글