스프링 프레임워크 [Spirng Framework] AbstractExcelView & AbstractPdfView Class Excel,Pdf download 구현

반응형

월별로 페이지 뷰 통계 정보나, 급여 명세서와 같은 정보를 엑셀로 제공해야 하는 경우들도 생긴다.

따라서 SPRING는 엑셀 형식으로 뷰 데이터를 생성할 수 있도록 View Class도 제공한다.

  • AbstractExcelView - POI API를 이용하여 엑셀 응답을 생성.
  • AbstractJExcelView - JExcel API를 이용하여 엑셀 응답 생성.

…POI API를 이용한 엑셀 응답을 생성하는 AbstractExcelView Class가 정의하는 메서드

protected abstract void buildExcelDocument(
Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception;

HSSFWorkbook는 POI API가 제공하는 엑셀 관련 Class.

하위 Class는 이 Class를 이용해 엑셀 문서를 생성

예시.

public class PageRanksView extends AbstractExcelView { // 엑셀을 띄는것을 사용할수있게 extends를하고  
  
@SuppressWarnings("unchecked")  
@Override  
protected void buildExcelDocument(Map<String, Object> model,  
HSSFWorkbook workbook, HttpServletRequest request,  
HttpServletResponse response) throws Exception{  
HSSFSheet sheet = createFirstSheet(workbook);  
createColumnLabel(sheet);  
  
List<pageRank> pageRanks = (List<pageRank>) model.get("pageRanks");  
int rowNum = 1;  
for(pageRank rank : pageRanks) {  
createPageRankRow(sheet, rank, rowNum++);  
}  
}  
  
private HSSFSheet createFirstSheet(HSSFWorkbook workbook) {  
HSSFSheet sheet = workbook.createSheet();  
workbook.setSheetName(0, "페이지 순위"); // 맨 아래 하단 엑셀 단이름을 페이지 순위라고 값을 정하고  
sheet.setColumnWidth(1, 256 *20); // 1번째 값을준다  
return sheet; //리턴한다  
}  
  
private void createColumnLabel(HSSFSheet sheet) {  
HSSFRow firstRow = sheet.createRow(0);  
HSSFCell cell = firstRow.createCell(0);// 1번째행 내용은  
cell.setCellValue("순위");  
cell = firstRow.createCell(1); // 2번째행 내용은  
cell.setCellValue("페이지");  
}  
  
private void createPageRankRow(HSSFSheet sheet, pageRank rank, int rowNum) {  
HSSFRow row = sheet.createRow(rowNum);  
HSSFCell cell = row.createCell(0);  
cell.setCellValue(rank.getRank());  
  
cell = row.createCell(1);  
cell.setCellValue(rank.getPage());  
}  
  
  
  
  
}

출력결과 예,


AbstractPdfView Class를 이용한 PDF Download

SPRING는 iText API를 이용해 PDF를 생성할 수 있는 AbstractPdfView Class를 제공

메서드 :

protected abstract void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer,  
HttpServletRequest request, HttpServletResponse response) throws Exception;

com.lowagie.text.Document Class는 iText가 제공하는 Class

Document 객체에 PDF문서를 생성하는데 필요한 객체를 추가하면 PDF문서를 생성할 수 있다.

AbstractPdfView 를 상속받아 PDF문서를 생성하는 뷰 CLass.

결과 :

반응형