게시판 엑셀 다운로드 기능

Renee·2023년 4월 4일
0

게시판에서 조회한 글 목록을 화면 그대로 엑셀로 만들어서 다운로드 하기

구매하기 버튼을 누른 회원의 번호와 상품명, 상품 종류, 조회일 로그를 보여주는 게시판을 만들고 조회한 화면 그대로를 관리자가 엑셀로 다운받을 수 있는 기능을 구현해보았다.
(*엑셀 다운로드 API를 활용하여 개발함.)
로그 조회시 DTO(VO)를 따로 만들어 값을 저장하지 않고 HashMap을 이용하여 각 로그를 key, value 형태로 담아 List로 만들어서 가져왔다.
for문으로 번호(index)를 내림차순으로 정렬시키고 등록일의 날짜 - 시간을 시-분-초 까지 보여지게 포맷팅해서 조회일로 보여준다.

페이지네이션 값과, 다운로드 될 때의 파일명, 샘플 엑셀 시트의 이름 값들을 넘겨주고, EgovExcelView 클래스의 인스턴스를 생성한다.

@RequestMapping(path = "/excel")
	public View excel(FnncVo listVo, Model model) throws Exception {
		
		try {
			PaginationInfo paginationInfo = new PaginationInfo();
			paginationInfo.setCurrentPageNo(listVo.getPageIndex());
			paginationInfo.setRecordCountPerPage(listVo.getRecordCountPerPage());
			paginationInfo.setPageSize(listVo.getPageSize());

			listVo.setFirstIndex(paginationInfo.getFirstRecordIndex());
			listVo.setLastIndex(paginationInfo.getLastRecordIndex());
			
			List<HashMap<String, Object>> resultList = staticsService.staticsList(listVo);
	        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			
			if (null != resultList && resultList.size() > 0) {
				paginationInfo.setTotalRecordCount(staticsService.count(listVo));
			}else {
				paginationInfo.setTotalRecordCount(0);
			}
	        
			if (null != resultList) {
				int index = paginationInfo.getTotalRecordCount() + 1 - ((paginationInfo.getCurrentPageNo()-1) * paginationInfo.getRecordCountPerPage() + 1);

				for (HashMap<String, Object> result : resultList) {

					result.put("click_rcord_sn", index);
					result.put("regist_dt", format.format(result.get("regist_dt")));
					
					index --;
				}
			}
			
			model.addAttribute("paginationInfo", paginationInfo);
			model.addAttribute("XLS_ID", "STATICS");
			model.addAttribute("XLS_SAVEAS_NM","회원_통계");
			model.addAttribute("list", resultList);

			
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

        return new EgovExcelView();
	}

0개의 댓글