[Java] JExcelApi로 엑셀 이용하기


Development note/Java  2015. 1. 20. 00:21

안녕하세요. 명월입니다.


우리가 프로그램을 작성하다 보면 파일 시스템을 이용하는 경우가 많이 있습니다. 가장 많이 사용하는 게 CSV, XML 이 있겠고 조금 예전에는 ini을 사용했었습니다.

최근에는 DB가 많은 발달해서 파일 시스템 비중이 예전보다 많이 줄기도 했지만 그래도 파일시스템을 이용해서 프로그램을 작성하면 퍼포먼스가 많이 올라가지요.

물론 그렇다고 무턱대고 다 파일 시스템을 해버리면 오히려 시스템 저하가 나온다는 걸 알아두세요..ㅎㅎ

그리고 웹에서 많이 사용하는 파일 시스템은 퍼포먼스를 위한 것보다 유저가 보기편한 PDF를 사용하는 경우가 많이 있습니다. 그중 사용빈도는 많이 적지만 엑셀을 사용하는 경우도 있네요.

제가 기장 최근 엑셀을 이용한 프로젝트중에는 xls로 엑셀 매크로를 만들어 놓고, 웹에서 필요한 데이터를 입력하고 그 엑셀을 열떄 매크로를 작동시켜 데이터를 보기 편하게 하고 사용자가 로컬에서 분석이 가능한 파일을 만들어 내는 시스템을 만들었습니다. 엑셀을 그런 식으로 이용할 수 있겠네요.

그럼 jxl에 대해 알아보도록 하겠습니다.


먼저 jxl.jar 파일을 연동 시켜 놓겠습니다.

jxl.jar

maven repository - https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl

Download - http://central.maven.org/maven2/net/sourceforge/jexcelapi/jxl/2.6.12/jxl-2.6.12.jar

간단하게 엑셀을 작성해서 0열에서 9열,0행에서 9열까지 순서대로 값을 넣어보겠습니다.

package Example;

import java.io.File;
import java.io.IOException;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class ExcelExam {
	public static void main(String[] args){
		try{
			new ExcelExam();
		}catch(Exception e){
			
		}
	}
	public ExcelExam() throws IOException,Exception{
		File file = new File("f:\\test.xls");
		WritableWorkbook workbook = Workbook.createWorkbook(file);
		WritableSheet sheet = workbook.createSheet("Sheet", 0);
		
		int count =0;
		for(int i=0;i<10;i++){
			for(int j=0;j<10;j++,count++){
				sheet.addCell(new Label(i,j,String.format("%d",count)));
			}
		}
		workbook.write();
		workbook.close();		
	}
}

결과 화면 입니다.

이번에는 포멧을 이용해서 테두리등을 설정하겠습니다.

WritableCellFormat format = new WritableCellFormat();
format.setBorder(jxl.format.Border.BOTTOM,jxl.format.BorderLineStyle.THIN);
format.setAlignment(Alignment.CENTRE);
format.setVerticalAlignment(VerticalAlignment.CENTRE);

sheet.addCell(new Label(12,12,"TEST",format));

workbook.write();
workbook.close();