본문 바로가기
개발/java

poi 이용 엑셀 파일 만들기

by areumtb 2017. 6. 28.
필요한 lib 적용 후


controller에서 코딩하는 순서..



1. 엑셀 파일을 생성
    SXSSFWorkbook wb = new SXSSFWorkbook(100);

2. sheet생성
Sheet hssfSheet = wb.createSheet("시트명");

3. 스타일 적용  - 미리 지정 후 해당 row 혹은 cell에 적용

ex) 타이틀 부분을 스타일 적용한다는 가정하에 

                CellStyle label = wb.createCellStyle(); // t스타일 객체 생성
                Font i = wb.createFont();                /폰트 객체 생성

                i.setFontHeightInPoints((short)18);    // 글자크기 지정
                i.setColor(i.COLOR_NORMAL);            //색 지정
                i.setBoldweight(i.BOLDWEIGHT_BOLD); // 선굵기지정
                //i.setFontName("굴림체");          // 폰트설정
                
//                label.setBorderTop(label.BORDER_THIN); //실선 적용
//                label.setTopBorderColor(IndexedColors.BLACK.getIndex()); // 선색
//                label.setBorderBottom(label.BORDER_THIN);
//                label.setBottomBorderColor(IndexedColors.BLACK.getIndex());
//                label.setBorderLeft(label.BORDER_THIN);
//                label.setLeftBorderColor(IndexedColors.BLACK.getIndex());
//                label.setBorderRight(label.BORDER_THIN);
//                label.setRightBorderColor(IndexedColors.BLACK.getIndex());
                label.setFont(i); //위에서 적용한 폰트스타일 적용
                label.setAlignment(label.ALIGN_CENTER); //정렬
                label.setVerticalAlignment(label.VERTICAL_CENTER); //정렬


3. row 생성  - 0부터 시작한다. 
Row title_row = hssfSheet.createRow((short)0);

4. cell 생성 - 0부터 시작한다. 
Cell title_cell = title_row.createCell((short)0);

2. 생성한 cell에 스타일 적용
    title_cell.setCellStyle(label);
                
5. 생성한 cell에 데이터 입력
    title_cell.setCellValue(param.getTitle());


6. 셀 병합 방법 -  cell 생성 후 병합

hssfSheet.addMergedRegion(new CellRangeAddress(시작row,끝row,시작cell,끝cell);

ex)
hssfSheet.addMergedRegion(new CellRangeAddress(0,(short)0,0,(short)2));
-> 0번째 로우 전체 에서 0번째 cell에서 2번째 cell까지 병합


※ 셀 병합시 데이터 입력할때 주의하여야한다.
cell 0번째부터 1번째 병합 -> cell에 데이터 생성시 Cell title_cell = title_row.createCell((short)0);
cell 2번째부터 3번째 병합 -> cell에 데이터 생성시 Cell title_cell = title_row.createCell((short)2);
cell 4번째부터 5번째 병합 -> cell에 데이터 생성시 Cell title_cell = title_row.createCell((short)4);

이렇게 입력을 하여야 한다.


7. cell에 width 설정
 억지로 주려고 했더니 자꾸 이상하게 먹어서 자동으로 width를 주는 함수로 적용
 ※ !!! 맨 마지막에 헤더의 수만큼만 반복문을 돌리면서 width 를 설정해주면 된다. 

    //넓이조절
                for(int k=0;k<cellName.length;k++){
                    
                        hssfSheet.autoSizeColumn(k); //자동 width 설정
                        hssfSheet.setColumnWidth(k, (hssfSheet.getColumnWidth(k))+1000 ); //보기좋게 넓힘
                    
                }


8. row 전부 완성 후 (엑셀에 들어갈 데이터 완성 후) 파일로 만들어 엑셀문서로 만들기
            String file_name = param.getpFileName() + "x";//.xlsx
                fileOut = new FileOutputStream("C:/areum/workspace/METIS/src/main/webapp/temp_file/ExcelExport/" + file_name);
                
                
                wb.write(fileOut); // 엑셀문서 
               
                fileOut.close();  //파일닫기

 

'개발 > java' 카테고리의 다른 글

이클립스 에러!! : Error creating bean with name 에러발생  (0) 2017.04.27
자바공부  (0) 2016.11.11
String,char  (0) 2016.11.09
1주차 - 자바란? , 변수  (0) 2016.11.04
진법  (0) 2016.11.04

댓글