개발언어/JAVA

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

코딩 시그널 2020. 10. 3. 00:01
반응형

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

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();
    	}
	}
}

 결과