이전의 방법은 헤더만 엑셀로 변환하는 식이었다면, POI를 사용하는 방법은 html의 header만 바꿔서 출력하는 게 아니라 그냥 바로 자바단에서 엑셀 파일을 핸들링하는 식이다.
헤더만 바꾸는 방법은 앞서 소개했듯이 저장할 때 다른 이름으로 저장해야 한다는 약간의 문제점이 있는데, POI를 사용하면 그럴 필요가 없다. 왜냐, 그냥 파일 자체를 엑셀로 만들어버리기 때문이다.
난이도로 따지면 헤더만 바꾸는 게 더 쉽긴 하다. 하지만, 라이브러리를 사용하는 데에 익숙한 사람이라면 POI를 사용하는 걸 추천한다.
이걸 사용하면 엑셀 뿐만 아니라, 워드, 파워포인트, 아웃룩.. 등.. MS Office군에 있는 것들을 제어할 수 있다.
사용 방법은 간단하다. 엑셀을 예로 들겠다.
일단 http://poi.apache.org/download.html 에 가서 라이브러리 파일을 다운로드 받고, 프로젝트에 추가한다.
그리고, 그냥 사용하면 된다.
API 참고 : https://poi.apache.org/apidocs
바쁜 개발자들을 위해 친절하게 http://poi.apache.org/spreadsheet/quick-guide.html <- 예제들도 잔뜩이다.
그냥 저것들만 보면 다~ 할 수 있다. 영어 못하는 사람은 좀 힘들겠지만.. 그닥 어려운 말은 없는지라..
아래는 간단하게 엑셀 파일을 출력하는 샘플 코드이다.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.util.HSSFColor;importorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.CellStyle;importorg.apache.poi.ss.usermodel.Font;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;publicclassExcelMain {    publicstaticvoidmain(String[] args) {                // Workbook 생성        Workbook xlsWb = newHSSFWorkbook(); // Excel 2007 이전 버전        Workbook xlsxWb = newXSSFWorkbook(); // Excel 2007 이상        // *** Sheet-------------------------------------------------        // Sheet 생성        Sheet sheet1 = xlsWb.createSheet("firstSheet");        // 컬럼 너비 설정        sheet1.setColumnWidth(0, 10000);        sheet1.setColumnWidth(9, 10000);        // ----------------------------------------------------------                // *** Style--------------------------------------------------        // Cell 스타일 생성        CellStyle cellStyle = xlsWb.createCellStyle();                // 줄 바꿈        cellStyle.setWrapText(true);                // Cell 색깔, 무늬 채우기        cellStyle.setFillForegroundColor(HSSFColor.LIME.index);        cellStyle.setFillPattern(CellStyle.BIG_SPOTS);                Row row = null;        Cell cell = null;        //----------------------------------------------------------                // 첫 번째 줄        row = sheet1.createRow(0);                // 첫 번째 줄에 Cell 설정하기-------------        cell = row.createCell(0);        cell.setCellValue("1-1");        cell.setCellStyle(cellStyle); // 셀 스타일 적용                cell = row.createCell(1);        cell.setCellValue("1-2");                cell = row.createCell(2);        cell.setCellValue("1-3 abccdefghijklmnopqrstuvwxyz");        cell.setCellStyle(cellStyle); // 셀 스타일 적용        //---------------------------------                // 두 번째 줄        row = sheet1.createRow(1);                // 두 번째 줄에 Cell 설정하기-------------        cell = row.createCell(0);        cell.setCellValue("2-1");                cell = row.createCell(1);        cell.setCellValue("2-2");                cell = row.createCell(2);        cell.setCellValue("2-3");        cell.setCellStyle(cellStyle); // 셀 스타일 적용        //---------------------------------        // excel 파일 저장        try{            File xlsFile = newFile("D:/testExcel.xls");            FileOutputStream fileOut = newFileOutputStream(xlsFile);            xlsWb.write(fileOut);        } catch(FileNotFoundException e) {            e.printStackTrace();        } catch(IOException e) {            e.printStackTrace();        }            }} | 
주의할 것은 2007 이상 버전으로 확장자가 xlsx로 되는 엑셀 파일을 핸들링하고 싶을 땐, new XSSFWorkbook()로 Workbook을 생성해줘야 한다는 점이다.
버전에 따라 생성하는 워크북만 다른 뿐, 나머지는 다 똑같다.
단, XSSFWorkbook(2007 버전 이상)을 생성하고 싶다면 라이브러리 파일을 프로젝트에 추가할 때, poi-ooxml-3.10.1.jar 파일이 필요하다.
위의 것을 실행하면 아래와 같은 testExcel.xls 파일이 만들어진다.
(MS Office가 없어서 한셀로 열었다)
위 샘플 코드는 간단하게 행과 셀을 생성해서 넣는 식인데, 조금만 응용하면 DB에 있는 내용을 불러와서 for문을 이용해 엑셀을 작성할 수 있을 것이다.
또, 위에 링크 걸어놓은 가이드를 보면 기존의 엑셀 파일에서 데이터를 뽑아오는 방법이나 다른 여러 설정들이 있으니 더 많은 걸 원하는 사람은 가이드를 잘 살펴보길 바란다.
'JAVA > EXCEL컨트롤관련' 카테고리의 다른 글
| POI - Excel Read/Write(xls, xlsx) sample (0) | 2014.11.27 | 
|---|---|
| xbeans 관련오류수정 (0) | 2014.11.17 | 
| [JAVA] POI 라이브러리를 이용한 엑셀 읽기 (0) | 2014.10.23 | 
| apache poi 를 이용한 엑셀 다운로드 처리 (0) | 2014.10.17 | 
| opencsv 사이트 (0) | 2014.10.17 | 
| apache poi 사이트 (0) | 2014.10.17 | 
| JXL 을 이용한 엑셀파일 (0) | 2014.10.17 | 
| [JAVA] 자바에서 엑셀을 만들자 : Apache POI (0) | 2014.10.17 | 
