[JAVA][Apach POI] 엑셀(.xlsx) 읽기 - Apach POI 라이브러리 사용

 POI 라이브러리를 이용한 엑셀 (.xlsx) 읽는 방법에 대한 포스팅입니다.

✻ POI 버전 : 4.1.2 (다운로드 경로 : http://poi.apache.org/download.html)

✻ 외부 라이브러리 참조방법(링크) : 외부 라이브러리(.jar) 참조 방법


1. 사용 객체 설명 & 예제 파일(.xlsx)





2. 예제 소스 (JAVA)

File file = new File("C:\\Users\\donghyun\\Documents\\202. Eclipse WorkSpace\\hyplayground.data\\" + "sample.xlsx");

@SuppressWarnings("resource")
XSSFWorkbook workbook = new XSSFWorkbook(file);

int rowIdx = 0;
int colIdx = 0;

XSSFSheet sheet = workbook.getSheetAt(0);

int rows = sheet.getPhysicalNumberOfRows();				// 행 전체
for(rowIdx=0; rowIdx<rows; rowIdx++)					// 행 단위 Loop - Start
{
	XSSFRow row = sheet.getRow(rowIdx);					// 단일 행 (Index)
	if(row != null)
	{
		
		int cells = row.getPhysicalNumberOfCells();		// 단일 행의 셀 전체					
		for(colIdx=0; colIdx<=cells; colIdx++)			// 셀 단위 Loop - Start
		{
			XSSFCell cell = row.getCell(colIdx);
			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()+"";
						break; 
					case ERROR:
						value=cell.getErrorCellValue()+""; 
						break; 
				}

			}
			
			System.out.println(rowIdx+"번 행 : "+colIdx+"번 열 값은: "+value);
		}			
	}			
}	
					


❋ 해설

: 엑셀(.xlsx)을 읽어서 각 행의 Cell단위 데이터를 출력.

1) File 객체 생성

  • File "객체명" = new File("경로" + "엑셀파일명"); 
2) XSSFWorkbook 객체 생성

  • XSSFWorkbook "객체명" = new XSSFWorkbook ("File 객체명"); 

3) XSSFSheet 객체 생성

  • XSSFSheet "객체명" = "XSSFWorkbook 객체".getSheetAt("Sheet 위치"); 
4) Row 개수 만큼 Loop 
  • Row 총 개수 : "XSSFSheet  객체".getPhysicalNumberOfRows();
5) XSSFRow 객체 생성

  • XSSFRow "객체명" = "XSSFSheet  객체".getRow("행 번호"); 
6) 단일 행의 Cell 개수 만큼 Loop
  • Cell 총 개수 : "XSSFSheet  객체".getPhysicalNumberOfCells();
7) XSSFCell 객체 생성

  • XSSFCell "객체명" = "XSSFRow 객체".getCell("셀 번호"); 
8) Cell의 DataType에 따라 분기처리
  •  이전 자료들은 "XSSFCell.CELL_TYPE_FORMULA"처럼 열거하였으나,
    포스팅에 쓰인 poi버전에서는 "FORMULA"과 같이 사용




3. 결과




0 댓글