| |||||||||||||||||||||||||||||||
http://blog.naver.com/levin01/100011049989 | |||||||||||||||||||||||||||||||
Jakarta POI
I. POI 란?
일반적으로 POI가 엑셀파일을 쓰는 컴퍼넌트로 알려져 있으나 POI는 프로젝트 이름입니다.
POI안에는 여러 컴퍼넌트들이 있습니다. ① POIFS
워드파일을 핸들링 하는 HWPF는 초기단계라 사용을 못하지만 기대는 되는군요 ^^
ps. 영어사전을 찾아보니 poi는 하와이의 토란 요리를 뜻하더군요. 우리나라말로 하니 자카르타 토란 프로젝트 쯤 될라나? ㅎㅎ
II. 다운로드 및 설치
다운로드 받으러 갑시다~! http://jakarta.apache.org/site/downloads/downloads_poi.cgi 현재 2.5.1버젼입니다. 다운받은 파일을 압축을 풀면 *.jar 파일들이 있을겁니다 이 파일들을 자신의 어플리케이션 /lib/에 복사합시다
POI API http://jakarta.apache.org/poi/apidocs/index.html Quick Guide http://jakarta.apache.org/poi/hssf/quick-guide.html
III. Formula(수식) 지원에 관해..
엑셀을 읽고 쓸때 수식을 지원합니다.
① 지원되는 부분 -. 수식 결과값 반환
② 부분적 지원 -. 배열 수식
IV. 기본객체
이름에서 무엇을 뜻하는지 대강 짐작 할 수 있겠죵?
① HSSFWorkbook - 엑셀 워크북을 말합니다.
위 4가지 객체는 앞으로 계속 나올겁니다. 눈여겨 미리 봐 둡시다. @.@
V. 엑셀 읽기 예제
① POSFS을 이용하여 엑셀 워크북을 생성합니다.
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("excelfile.xls"));
② 생성된 워크북을 이용하여 시트 수만큼 돌면서 엑셀 시트 하나씩을 생성합니다.
int sheetNum = workbook.getNumberOfSheets(); for (int k = 0; k < sheetNum; k++) { System.out.println(Sheet Name : " + workbook.getSheetName(k)); }
③ 생성된 시트를 이용하여 그 행의 수만큼 돌면서 행을 하나씩 생성합니다.
int rows = sheet.getPhysicalNumberOfRows(); for (int r = 0; r < rows; r++) { System.out.println("Row : "+row.getRowNum()); }
④ 역시나 생성된 행을 이용하여 그 셀의 수만큼 돌면서 셀을 하나씩 생성합니다.
int cells = row.getPhysicalNumberOfCells(); for (short c = 0; c < cells; c++) { <--!! short 형입니다. 255개가 max!HSSFCell cell = row.getCell(c); int celltype = cell.getCellType(); ... } 셀을 생성하여 셀 타입에 따라 처리를 해주면 끝~
⑤ 주의사항 만약 엑셀에서 A열에 아무런 값이 없으면 그 행은 읽지 못합니다. 행을 읽지 못하니 셀또한 처리 할 수 없습니다
VI. 엑셀읽기 샘플소스
샘플 데이터
A열은 B열에 대한 셀 타입을 나타내며 C열은 D열에대한 셀 타입을 나타냅니다. 즉 B:1 의 123456의 셀 타입은 A:1 일반 이라는 것이며 마찬가지로 D:1의 2005-02-09의 셀타입은 C:1 사용자정의로 세팅하였다는 겁니다
이 엑셀의 데이터를 다음 소스로 읽어 보겠습니다.
위 소스의 결과입니다.
결과를 보니 사용자가 지정한 셀 타입에 관계없이 숫자관련 셀은 POI에서 모두 숫자 타입으로 인식해 버렸습니다. 날짜 역시 지정한 셀 타입에 관계없이 모두 숫자 타입으로 인식해 버리는군요! 그럼 어떻게 날짜를 제대로 표현할까요? 날짜 타입을 제대로 나타내기 위해서는 날짜 Cell에는 getDateCellValue()를 사용하면 정상적으로 처리 할 수 있습니다. SimpleDateformat sdf = new SimpleDateformat("yyyy-MM-dd hh:mm"); 등을 이용하면 나타내고자 하는 알짜를 표현 하기 더 쉽겠지요 나머지 수식을 가져 올때도 마찬가지입니다. 이런 사항을 도표로 나타내보았습니다.
org.apache.poi.hssf.usermodel.HSSFCell 에는 모두 6가지의 Cell Type이 있는데, cell.getCellType()을 하면 그 셀의 반환값을 알 수 있으며 그에 상응하는 static 필드타입은 다음과 같습니다.
이번시간에는 POI 프로젝트를 이용하여 엑셀 파일을 읽어보았습니다. 다음 시간에는 엑셀파일에 쓰는 핸드링을 해 보도록 하지요~ |
네이버 |
| |||
http://blog.naver.com/levin01/100011050010 | |||
Jakarta POI
VII. 엑셀 쓰기예제
쓰기도 역시 읽기와 비슷합니다. ① 엑셀 워크북을 생성합니다. 행과 셀을 생성하려면 당연한 절차겠죠? HSSFWorkbook workbook = new HSSFWorkbook();
② 시트를 생성합니다. 시트명을 파라미터로 바로 생성 합니다. HSSFSheet sheet = workbook.createSheet("sheet name");
만약 한글로 시트명을 만들려면 다음과 같이 인코딩이 필요합니다. HSSFSheet sheet = workbook.createSheet(); workbook.setSheetName( 0 , "한글" , HSSFWorkbook.ENCODING_UTF_16 );
③ 셀에 사용할 스타일을 미리 생성해 둡니다. HSSFCellStyle style = wb.createCellStyle(); 등 여러가지 스타일을 만들 수 있습니다.
스타일은 다음 주소를 참고하세요 http://jakarta.apache.org/poi/apidocs/org/apache/poi/hssf/usermodel/HSSFCellStyle.html
④ 로우를 하나 생성합니다. HSSFRow row = sheet.createRow(0);
⑤ 셀츨 하나 생성하여 스타일을 주고 값을 입력합니다. HSSFCell cell = row.createCell((short)0); cell.setCellStyle(style); cell.setCellValue("jakarta project!");
만약 한글을 입력한다면 인코딩 해야 하며 값 세팅전에 해야 합니다. cell.setEncoding(HSSFCell.ENCODING_UTF_16); //한글 처리 cell.setCellStyle(style); cell.setCellValue("자카드타 프로젝트!");
⑥ 모든 셀이 다 입력되었으면 파일을 만듭니다. FileOutputStream fs = new FileOutputStream("excelfile.xls");
VIII. 쓰기샘플 소스
자 결과화면 입니다.
성공!
위의 소스를 기본으로 한다면 그리 어렵지 않을겁니다 ^^
참고로 셀병합은
HSSFWorkbook wb = new HSSFWorkbook(); |
네이버 |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
http://blog.naver.com/levin01/100012095949 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Jakarta POI
IX. Cell을 좀더 유연하게!
1. Date타입 셀 만들기 ① 소스
② 결과
③ HSSFDateFormat이 지원하는 날짜 포맷 cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); 에서 다음과 같이 포맷을 정할 수 있다 (현재시간은 2005년 3월 14일 0시 52분 17초.. 헛 화이트데이 --;)
2. Cell의 Align속성 ① 소스
② 결과
3. Cell의 Border 속성 ① 소스
② 결과
③ HSSFCellStyle HSSFCellStyle에는 다음과 같은 static 멤버변수가 존재합니다
4. Cell의 색갈 채우기 ① 소스
② 결과
③ HSSFColor 정리!
5. Cell 병합 ① 소스
② 결과
③ Region 특정셀을 합칠 때는 HSSFSheet의 addMergedRegion(Region region)와 합칠 셀의 영역을 나타내는 Region을 사용한다. Region region = new (int 시작ROW, short 시작COL, int 종료ROW, short 종료COL);
6. Cell에 폰트 설정하기 ① 소스
② 결과
============================================= 본문서는 자유롭게 배포/복사 할수 있지만 이문서의 저자에 대한 언급을 삭제하시면 안됩니다 저자 : GoodBug (unicorn@jakartaproject.com) 최초 : http://www.jakartaproject.com ============================================= |
네이버 |
| |||
http://blog.naver.com/levin01/100017355281 | |||
Jakarta POI
X. 이미지
민군 : 유니콘홈피에서 퍼왔습니다 허락없이 퍼온점 죄송하게 생각하고 저작권이 문제될경우 즉시삭제하겠습니다 보시는분들 주의해주시길 부탁드립니다
POI 3.0 부터 드디어 이미지를 지원하는군요. 아직 알파버젼이구요 http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 에서 최신버젼을 다운 받을 수 있습니다
최신링크 http://mirror.apache.or.kr/jakarta/poi/dev/bin/poi-bin-3.0-alpha1-20050704.zip
아래 소스는 OKJSP의 "이루"님이 작성한 소스입니다 from http://www.okjsp.pe.kr/bbs?act=VIEW&seq=60543&bbs=bbs4&keyfield=content&keyword=&pg=0
|
출처 : Tong - 반이오타님의 JAVA Programing통
'jsp' 카테고리의 다른 글
자바<JAVA> JXL이용하여 엑셀 읽기 초간단 예제 자바 프로그램 (0) | 2010.06.29 |
---|---|
자바<JAVA> JXL 이용하여 엑셀에 쓰기 초간단 예제 (0) | 2010.06.29 |
같은 이름을 가지는 여러개의 입력필드의 값 받기 | PHP (0) | 2010.05.15 |
문자열나누기 (0) | 2010.02.23 |
jsp 표준 태그 (0) | 2010.02.10 |