jxl을 통한 엑셀 저장하기
먼저 관련사이트 에서 jexcelapi 를 다운받는다.
압축파일을 열어보면 관련 javadoc 및 소스파일도 함께 있으니 참고하시길...
여하튼 jxl.jar 파일을 관련 프로젝트에 등록한다.
<관련 클래스 간략설명>
jxl.write.WritableWorkbook : workbook,sheet등을 생성 및 관리하기 위한 엑셀파일관리 추상 클래스
jxl.Workbook : 기본 엑셀파일 추상 클래스
jxl.write.WritableSheet : sheet를 관리하는 인터페이스
jxl.write.WritableCellFormat : 엑셀 내 cell관련 포맷정보
jxl.write.Label : 엑셀내 필드명(엑셀의 cell에 들어있는 데이타 값이라 생각하면 된다)
jxl.write.Blank : 빈 cell관리 클래스
<엑셀 처리>
1. 엑셀파일을 생성한다
WritableWorkbook testExcel = Workbook.createWorkbook(new File("sample.xls"));
기존의 엑셀파일을 읽어와 처리하고자 하는 경우에는 다음과 같다.
WritableWorkbook testExcel = Workbook.getWorkbook(new File("sample.xls"));
2. 생성된 엑셀관리 객체의 sheet를 선택한다
WritableSheet sheet1 = testExcel.createSheet("1stShell", 0);
위의 경우 새로이 생성된 엑셀파일내 새로운 sheet를 추가하는 것이라면
기존의 생성된 특정 sheet를 선택하고자 하는 경우 다음과 같다
WritableSheet sheet0 = testExcel.getSheet("preShell") ;
3. 셀서식을 설정한다
WritableCellFormat titleFormat= new WritableCellFormat();
- 폰트 설정
WritableCellFormat은 쉘정열 및 테두리설정 및 배경색 등 셀서식과 관련된 설정을 할 수 있다.
폰트 설정의 경우 다음과 같이 처리한다.
WritableCellFormat titleFormat
= new WritableCellFormat(
new WritableFont (WritableFont.ARIAL, //폰트 타입.Arial 외 별다른건 없는듯 하다.
20, //폰트 크기
WritableFont.BOLD, //Bold 스타일
false, //이탤릭체여부
UnderlineStyle.NO_UNDERLINE, //밑줄 스타일
Colour.WHITE, //폰트 색
ScriptStyle.NORMAL_SCRIPT)); //스크립트 스타일
폰트 설정의 경우 위와 같이 Font설정 객체를 생성한후 서식객체 생성시 인자로 넣으면 된다.
다양한 생성자를 제공하고 있으니 굳이 위화면과 같이 할 필요는 없다. (API 참조)
-셀 서식 설정
기타 셀서식과 관련 주로 사용하는 기능을 설명하면 다음과 같다.
titleFormat.setAlignment(Alignment.CENTRE); // 셀 가로정열(좌/우/가운데설정가능)
titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 셀 세로정렬(상단/중단/하단설정가능)
titleFormat.setBorder(Border.ALL, BorderLineStyle.THICK); // 보더와 보더라인스타일 설정
titleFormat.setBackground(Colour.ICE_BLUE); // 배경색 설정
4. 데이타를 셀에 등록한다
Label title = new Label(0, 0, "테스트 타이틀", titleFormat); //라벨(열,행,"문장",포멧) : 숫자형은 Number를 사용
sheet1.addCell(title); // sheet1의 1열1행에 "테스트 타이틀"이라는 데이타를 넣는다
--> 데이타 등록을 위한 Label 생성시 첫번째 인자는 sheet의 열, 두번째 인자는 행을 의미한다는 것에 주의...
5. Sheet 디자인 설정(*^^*)
이부분은 해도 그만 안해도 그만이지만 깔끔한 엑셀저장을 위한 선택코스?
-셀 크기 변경
관련메소드는 setColumnView(몇번째 컬럼, 넓이)
sheet1.setColumnView(0, 20); //sheet1의 첫번째 열의 크기를 20으로 설정한다
또는
CellView cv = sheet1.getColumnView(0);
cv.setSize(30);
sheet1.setColumnView(0,cv); //기존의 열정보 변경. 30으로 변경한다
- 셀병합
sheet1.mergeCells(0, 0, 5, 0 ); //sheet1의 1열1행의 cell을 6열1행의 셀까지 병합한다.
- 빈 셀 처리
Blank blank = new Blank(6, 0, titleFormat); // 빈 셀(열,행,포멧)
sheet1.addCell(blank); // 위의 병합셀옆에 같은서식의 빈셀추가
6. 데이타를 파일에 저장한다.
testExcel.write(); // 쓰고
testExcel.close(); // 닫자
서두에서 밝힌바와 같이 기타 관련 API의 내용은 압축파일내 docs 디렉토리 밑에 나와 있어여..
'개발 이야기 > Java' 카테고리의 다른 글
@Override 사용하기 (0) | 2008.01.24 |
---|---|
Generic 사용하기..*^^* (0) | 2008.01.23 |
JAVA API Chm파일 다운로드 링크 (0) | 2007.12.21 |
[JBoss 보안] DataSource 패스워드 암호화 (0) | 2007.06.26 |
[java] 예약어 enum (0) | 2007.06.04 |