본문 바로가기

Language/Java / JSP

[Java] 엑셀 파일 읽기

반응형

지난번에 JXL 라이브러리를 이용하여 엑셀파일 생성법에 대해서 포스팅했다. [포스팅 보기]


오늘은 반대로 해당 라이브러리를 이용하여 엑셀 파일을 읽어보자.

사용할 엑셀파일은 JXL 라이브러리 특성상 엑셀97 ~ 2003 포맷(xls)으로 저장이 되어있어야 한다.
요새 지원하는 xlsx 등은 읽을수 없다.

상위버전의 엑셀로 작성된 문서라면 엑셀에서 다른이름 저장을 선택하여 통합문서로 재 저장해야 한다.
매번 엑셀을 변환해야 하지만 어쩌겠는가. 목마른 사람이 우물을 판다고 해당 라이브러리 개발자에게 감사해하며 사용하자.



1. 샘플 엑셀파일(test.xls)




2. 엑셀 파일 읽기 소스
import java.io.File;
import java.io.IOException;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;


public class ReadExcel {

	public static void main(String[] args) {

		
		// 파일 객체 생성 - 엑셀파일 경로
		File file = new File("C:\\test.xls");
		
		
		
		
		try {
			
			// 엑셀파일 워크북 객체 생성
			Workbook workbook = Workbook.getWorkbook(file) ;
			
			// 시트 지정
			Sheet sheet = workbook.getSheet(0);
			
			// 행 길이
			int endIdx = sheet.getColumn(1).length-1;
			
			
			for(int i=0; i <= endIdx; i++){
				
				// 첫번째 열(A)
				String name = sheet.getCell(0, i).getContents() ;
				
				// 두번째 열(B)
				String age = sheet.getCell(1, i).getContents() ;
				
				
				
				System.out.println(name + " : " + age) ;
				
				
			}
			
			
			
			
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

3. 실행 결과 값



읽어야 할 열이 많을경우 sheet.getCell(1, i).getContents() 해당 숫자부분을 순차적으로 늘리면 된다.
또 첫번째 시트가 아닌 다른 시트를 읽어야 할때는 workbook.getSheet(0) 에서 0대신 요청하는 시트의 번호를 넣으면 된다.