프레임워크

꿍꿍따 2015. 11. 5. 14:48

전자정부프레임워크에서 엑셀 다운로드는 간단하게 ExcelView 를 만들어서

간단한 형태의 목록 나열식 다운로드를 제공한다.

 

하지마 엑셀 양식 화면이 복잡하거나 cell을 합치고 나누고 폰트 변경하고 배경 색 주고 등의

POI를 활용해야 하는 경우, Controller 에서 POI로 작성해서 다운로드 처리해주면 되겠습니다

 

1) ExcelView 를 사용한 경우 예

 

@RequestMapping(value="/Excel1.do")
public View Excel1(@ModelAttribute xxxVO searchVO, ModelMap model) throws Exception {
        List<?> dataList = xxxService.getExcelData(searchVO);
       
        String[] excel_title = {"사업소","공사명","착공일","준공일"};
        String[] excel_column = {"SNM","GSNAME","SDATE","EDATE"};
       
        model.addAttribute("file_name", "공사목록");
        model.addAttribute("excel_title", excel_title);
        model.addAttribute("excel_column", excel_column);
        model.addAttribute("data_list", dataList);
       
        return new ExcelView();
    }

 

2) POI로 직적 가공한 예

 

 @RequestMapping(value="/ExcelPoi.do")
 public void ExcelPoi(@ModelAttribute xxxVO searchVO, HttpServletResponse response, Model model) throws Exception {

     HSSFWorkbook objWorkBook = new HSSFWorkbook();
     HSSFSheet objSheet = null;
     HSSFRow objRow = null;
     HSSFCell objCell = null;       //셀 생성
       
        //제목 폰트
  HSSFFont font = objWorkBook.createFont();
  font.setFontHeightInPoints((short)9);
  font.setBoldweight((short)font.BOLDWEIGHT_BOLD);
  font.setFontName("맑은고딕");
  
  //제목 스타일에 폰트 적용, 정렬
        HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일
  styleHd.setFont(font);
  styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

  objSheet = objWorkBook.createSheet("첫번째 시트");     //워크시트 생성
  
  // 1행
  objRow = objSheet.createRow(0);
  objRow.setHeight ((short) 0x150);
       
  objCell = objRow.createCell(0);
  objCell.setCellValue("번호");
  objCell.setCellStyle(styleHd);
  
  objCell = objRow.createCell(1);
  objCell.setCellValue("이름");
  objCell.setCellStyle(styleHd);
  
  // 2행
  objRow = objSheet.createRow(1);
  objRow.setHeight ((short) 0x150);
  
  objCell = objRow.createCell(0);
  objCell.setCellValue("1");
  objCell.setCellStyle(styleHd);
  
  objCell = objRow.createCell(1);
  objCell.setCellValue("홍길동");
  objCell.setCellStyle(styleHd);
  
  
  response.setContentType("Application/Msexcel");
  response.setHeader("Content-Disposition", "ATTachment; Filename="+URLEncoder.encode("테스트","UTF-8")+".xls");

  OutputStream fileOut  = response.getOutputStream(); 
  objWorkBook.write(fileOut);
  fileOut.close();
       
  response.getOutputStream().flush();
  response.getOutputStream().close();
}

 

당연히 POI 클래스는 import 되어야겠죠.

 

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;