원하는 특정 영역 (ex. <div>) 만 excel 로 export 하고 싶을 때
action 에서 해당 내용을 다시 select 하여 결과 jsp 에서 excel 의 내용을 다시 그려주곤 했다.
하지만 아래와 같은 방법으로도 가능 하다.
1. IE
excel 로 그려주고 싶은 부분을 <div> 로 묶는다. 아래 소스에서는 target_tb
target table 의 html 을 action 으로 submit();
excel jsp 에서는 해당 html tag 를 받아서 그려주기만 하면 된다.
- jsp & javascript
.. <div id="target_tb"> <table>....</table> </div> <iframe id="xlsFrame" name="xlsFrame" style="width: 0px; height: 0px; border: 0px;"></iframe> <form id="excelForm" name="excelForm" method="post" target="xlsFrame" action=""> <input type="hidden" id="excelSource" name="excelSource"> </form> ..
... document.excelForm.action = getContextRoot() + 'project/toExcel.do'; $('#excelSource').val($('#test_tb').html()); document.excelForm.submit(); ...
|
- Action class
@RequestMapping(value = "toExcel.do") public String toExcel(HttpServletRequest req) { String excelSource = req.getParameter("excelSource"); String endUser = req.getParameter("endUser"); try { excelSource = new String(excelSource.getBytes("iso-8859-1"), "UTF-8"); endUser = new String(endUser.getBytes("iso-8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } req.setAttribute("excelSource", excelSource); return "/toExcel";
} |
- excel jsp
<%@ page contentType="application/vnd.ms-excel;charset=UTF-8" pageEncoding="UTF-8"%> <% response.setHeader("Content-Type", "application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=test.xls); response.setHeader("Content-Description", "JSP Generated Data"); %> ${excelSource} |
2. NO IE
IE 가 아닌 경우 더 간단하다. Action class 를 거치지 않아도 된다.
window.open('data:application/vnd.ms-excel,filename="test.xls",' + encodeURIComponent($('#test_tb').html()), '_blank'); e.preventDefault(); |
'IT > Web' 카테고리의 다른 글
Apache 서버를 Tomcat 앞에 두어야 하는가? (0) | 2013.12.21 |
---|---|
리눅스에서 톰캣 일반 계정으로 실행 하기 (3) | 2013.12.21 |
log4j.properties 정리 (0) | 2013.12.21 |
Tomcat 메모리 늘리기 (Java heap space 부족 오류 발생 시) (0) | 2013.12.21 |
Tomcat HTTPS, HTTP 동시 이용 (0) | 2013.12.21 |