FULL STACK/SPRING &EGOV

게시판 테이블 엑셀로 변환

publepuble 2018. 12. 13. 16:11

가끔 업무보는데 정말 많은 데이터를 가지고있는 테이블일 경우 엑셀로 출력할 수 있는 기능을 요청하는 클라이언트들이 정말 많다. 엑셀로 보면 그 수많은 데이터들이 깔끔히 정리되는느낌이랄까...?

상황설정을 음... 게시판 페이지에서 "엑셀다운로드" 버튼을 클릭시에 엑셀에 게시판 데이터들이 엑셀로 뽑혀나오는걸로 가정했을때 코드


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>


반응형