자바(Java)/JAVA 2SE

엑셀 파일 읽기 - Java Excel API 사용

본클라쓰 2009. 9. 10. 16:35

 

자바로 엑셀 파일을 읽기 위해서는 다음의 순서로 코딩해야 한다.

 

import jxl.*;


Workbook workbook = new Workbook( new File("파일명"));

Sheet sheet = workbook.getSheet(0);

Cell a0 = sheet.getCell(0,0);


String content = a0.getContents();


workbook.close();

 

 


jxl.Workbook

 

 파일객체를 매개변수로 하여 엑셀 파일을 담고 있는 자바 객체이. Workbook 객체를 생성시 파일이나 스트림을 매개변수로 하여 엑셀파일 객체를 생성한다.

Workbook getWorkbook(File file)

Workbook getWorkbook(InputStream is)

 

Workbook 클래스 메소드)

Sheet getSheet(int index) - 인덱스를 기준으로 시트를 반환한다.

Sheet getSheet(String name) - 시트의 이름을 기준으로 시트를 반환한다.

Sheet getSheets() - Workbook에서 시트를 반환한다.

String[] getSheetNames() - 시트의 이름 배열을 반환한다.

int getNumberOfSheets() - 시트의 수를 반환한다.



 

jxl.Sheet

 

 엑셀 파일의 Sheet를 담는 객체이다. 엑셀 파일에서 Sheet는 0번 부터 시작한다. Sheet 객체는 workbook 객체에서 시트의 인덱스 번호나 시트의 이름을 통해 얻을 수 있다. 만약, 엑셀 파일에서 젤 처음 Sheet를 가져오기 위해서는 workbook.getSheet(0) 메소드를 사용하면 된다. 

 

Sheet sheet = workbook.getSheet();

 

 

Sheet 클래스 메소드)

- Cell getCell( int column, int row ) : 컬럼과 로우 값으로 셀을 반환

- Cell getCell(String loc) : 위치문자로 셀을 반환

- Cell[] getColumn(int col) : 컬럼에 해당하는 셀의 배열을 반환

- int getColumns() : 컬럼의 수를 반환

- String getName() : 현재 시트의 이름을 반환

- Cell[] getRow( int row ) : 로우에 해당하는 셀의 배열을 반환

- int getRows() : 현재 시트의 로우수를 반환

 

 


■ jxl.Cell

 

 엑셀 파일에서 실제 데이터가 들어있는 셀을 담는 객체이다. Workbook 객체에서 Sheet를 얻은 다음 Sheet에서 셀의 인덱스 번호를 기준으로 Cell 객체를 얻을 수 있다. Sheet는 테이블로 구성되어 있으며 테이블은 colomn, row로 구성되어 있다. Cell 객체는 getCell(열, 행) 메소드를 사용하여 얻는다.  

 

Cell cell = sheet.getCell( 0,0);

 

Cell 클래스 메소드)

int getColumn() : 현재 셀의 컬럼 번호를 반환

int getRow() : 현재 셀의 로우 번호를 반환

Sting getContents() : 셀에 있는 내용을 문자열로 반환

CellType getType() : 셀의 타입을 반환

 

셀 안에 있는 실제 내용 얻기

 

String content = a0.getContents();

 

 셀 안에 있는 데이터 타입은 여러 가지로 존재 할 수 있지만, Java Excel API에서는 타입을 무시하고 무조건 문자열 데이터를 받을 수 있다. 하지만 셀 안의 데이터 타입과 같은 타입으로 데이터를 얻고 싶다면 변수 타입을 셀 안의 데이터 타입과 일치시켜 사용한다.

 

 

전체 엑셀 데이터를 읽는 코드)

Workbook wb = Workbook.getWorkbook( new File( "c:/excel.xsl") ) ;

 

for( int i = 0 ; i < wb.getNumberOfSheets() ; s++ ) {

    Sheet sheet = workbook.getSheet( s );

    out.println("시트번호 : " + s );

 

    for( int j = 0 ; j < sheet.getRows() ; j++ ) {

        Cell cell = sheet.getCell(c, s);

        out.println( cell.getContents() + s + "_" + c + "//");

    }

}