게시판 테이블 엑셀로 변환
가끔 업무보는데 정말 많은 데이터를 가지고있는 테이블일 경우 엑셀로 출력할 수 있는 기능을 요청하는 클라이언트들이 정말 많다. 엑셀로 보면 그 수많은 데이터들이 깔끔히 정리되는느낌이랄까...?
상황설정을 음... 게시판 페이지에서 "엑셀다운로드" 버튼을 클릭시에 엑셀에 게시판 데이터들이 엑셀로 뽑혀나오는걸로 가정했을때 코드
list.jsp
<div class="but">
<a href="excel.do" class="button">엑셀 다운로드</a>
</div>
Controller
@RequestMapping(value = "excel.do")
public void excel(Model model, Dto dto) {
// 게시물 조회
model.addAttribute("list", dtoService.findAll(dto));
}
excel.jsp
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<meta http-equiv="Content-Type" content="application/vnd.ms-excel;charset=UTF-8">
<%
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
response.setHeader("Content-Disposition","attachment;filename="+sdf.format(cal.getTime())+"_excel_file.xls");
response.setHeader("Content-Description", "JSP Generated Data");
%>
<style>
.list_table{width:800px;}
.list_table tr td, .list_table tr th{border: 1px solid #000;}
</style>
</head>
<body>
<table class="list_table">
<caption>리스트 목록</caption>
<colgroup>
<col width="10%">
<col width="15%">
<col width="15%">
</colgroup>
<thead>
<tr>
<th scope="col">성명</th>
<th scope="col">아이디</th>
<th scope="col">휴대전화번호</th>
</tr>
</thead>
<tbody>
<c:set var="size" value="${fn:length(list) }" />
<c:forEach items="${list }" var="list" varStatus="count">
<tr>
<td class=""><c:out value="${list.name }"/></td>
<td class=""><c:out value="${list.id }"/></td>
<td class=""><c:out value="${list.phone }" /></td>
<td class="title">
</tr>
</c:forEach>
<c:if test="${empty list }">
<tr>
<td colspan="5">게시글이 없습니다.</td>
</tr>
</c:if>
</tbody>
</table>
</body>
</html>