PHP는
<?
header("Content-Type: application/vnd.ms-excel");
?>
JSP는
<%@ page contentType="application/vnd.ms-excel; name='My_Excel'" %>
<%
response.setHeader("Content-Disposition", "inline; filename=myfile.xls");
response.setHeader("Content-Description", "JSP Generated Data");
%>
저 부분을 <HTML> 태그 앞에 넣으면 끝나지요.
저 페이지가 호출이 되면 오피스가 깔려있는 사용자들은 저장할것인지 그냥 열것인지를 물어보구여, 안깔려 있는 사용자들은 파일을 다운받을수 있게 되지요.
그럼 워드 파일은
<?
header("Content-Type: application/msword");
?>
파워포인트 역시 같은 방법으로
<?
header("Content-Type: application/vnd.ms-powerpoint");
?>
그럼 마지막으로 ASP에서는
<%
Response.Buffer = TRUE
Response.ContentType = "application/vnd.ms-excel"
%>
다음은 header 내용을 변경해서 excel로 바꾸어 주는 구문입니다.
* excel.php
<?php
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=test.xls");
header("Content-Description: PHP4 Generated Data");
?>
<html>
<body>
<table>
<tr>
<td>테스트1</td>
<td>테스트1</td>
<td>테스트1</td>
<td>테스트1</td>
</tr>
<tr>
<td>테스트2</td>
<td>테스트2</td>
<td>테스트2</td>
<td>테스트2</td>
</tr>
</table>
</body>
</html>
실행시켜보세요. 어떻게 되죠? test.xls 이름으로 excel 화일이 다운로드 되죠.
혹 DB내용을 excel형태로 출력해야될 때 유용할거 같습니다
[JSP] 쿼리결과를 엑셀로 추출
<%@ page contentType="application/vnd.ms-excel;charset=euc-kr" import="java.sql.*,java.text.*"%><%
response.setHeader("Content-Disposition", "inline; filename=myfile.xls"); // 파일 이름 지정
response.setHeader("Content-Description", "JSP Generated Data");
Connection con = null ;
Statement st = null ;
ResultSet rs = null ;
try{
con = ## 컨넥션 얻기 ##
st = con.createStatement();
rs = st.executeQuery("## 쿼리 ##");
ResultSetMetaData rsmd = rs.getMetaData();
%><html>
<body bgcolor=white>
<table border=1>
<tr bgcolor="#CACACA">
<% for ( int i = 1 ; i <= rsmd.getColumnCount() ; i ++ ) { %>
<th><%=rsmd.getColumnName(i)%></th>
<% } %>
</tr>
<%
while(rs.next()) {
%>
<tr>
<% for ( int i = 1 ; i <= rsmd.getColumnCount() ; i ++ ) { %>
<td><%
if ( rs.getString(rsmd.getColumnName(i)) == null ) {
out.print("");
} else {
out.print(rs.getString(rsmd.getColumnName(i)));
}
%></td>
<% } %>
</tr>
<% } %>
</table>
</body>
</html>
<%
} catch (Exception eee) {}
finally {
if ( rs != null ) rs.close();
if ( st != null ) st.close();
if (con != null ) con.close;
}
%>
2011/06/15 09:59
http://blog.naver.com/hogini/10111306100
기존에는 a.asp가 있고 그것을 excel로 저장하기 위해선 같은 a.asp 파일을 복사하여 a_e.asp를 만들고
a_e.asp의 상단 부분에 다음과 같은 구분을 삽입했다.
이럴경우 a.asp의 버튼이나 잡다한 것 까지 죄다 excel로 저장되어 지저분해지고. a_e.asp만 따로 해서 편집하자니
a.asp가 자주 변경되면 그것 또한 짜증이였다.
<% |
해서. JQuery를 사용해보니 훨씬 간편하고 아주 좋았다!
<form>에서 아래와 같이 onsubmit부분에 $("#excel_val")이라는 id, 즉 post로 넘겨줄 hidden값에 원하는구역에 <div>감싸고 그 id값.html()로
해당 <div> 아래의 모든 태그를 가지고 온다.
그리고 submit으로 a_e.asp로 날려주면 끝.
a_e.asp에선 request로 받아주면 된다.
또 하나 맘에 드는점은 jquery로 각종 스타일을 주고 excel 저장했던 기존방법은 html에선 잘되는데 엑셀로 저장하면 스타일이 안먹는 경우가
많았지만 jquery로 하니 현재 보이는 html상태를 excel에서 거의 그대로 저장하니 아주 만족!!
a.asp
<div id="excel_view"> <table> ... </table> </div> <input type="button" value="Excel" onclick="excel_save()" /> <!--엑셀 저장 버튼--> <!--엑셀로 저장--> |
a_e.asp
<% <html xmlns:o="urn:schemas-microsoft-com:office:office" <head> </head>
|
JSP
jQuery 를 이용해서 HTML 테이블을 엑셀로 저장하는 간단한 방법입니다.
다음은 HTML 코드입니다.
<form action="/SaveToExcel.jsp" method="post" target="_blank"
onsubmit='$("#dataToDisplay").val( $("<div>").append( $("#ReportTable").eq(0).clone() ).html() )'>
<pre><input type="image" src="/images/icons/save_excel.png"></pre>
<pre><input type="hidden" id="dataToDisplay" name="dataToDisplay" />
<table id="ReportTable">
... 중략
</table>
</form>
설명
reportTable - 저장하기 원하는 테이블 ID
dataToDisplay - 서버로 POST될 베이블을 위한 hidden변수
폼의 onSubmit시에 저장할 HTML 테이블을 jQuery 메서드로 쉽게 처리할수 있다.
<table>을 포함한 HTML코드를 가져오는 부분의 처리가 중요하다.
jQuery.html() 메서드는 innerHTML만 가져오므로 table id를 기준으로 실행하면 <table> 태그가 빠지게 된다.
그래서 <div> 안에 전체 <table> 을 append하면 <div> <table>...</table> </div> 가 되고
여기서 .html() 을 실행하면 <table>...</table> 을 리턴하므로 원하는 결과를 얻을 수 있다.
다음은 서버쪽의 코드를 Jsp의 예로 보면 다음과 같다.
<%
response.setContentType("application/vnd.ms-excel; name='excel'");
response.setContentDisposition("filename=export.xls");
// Fix for crappy IE bug in download.
response.setHeader("Pragma","");
response.setHeader("Cache-Control","");
%>
<html>
<head></head>
<body>
${param.dataToDisplay}
</body>
</html>
'JSP' 카테고리의 다른 글
페이징 처리. JSP 설명까지 포함 (2) | 2012.11.01 |
---|---|
Problems warning 를 제거 하자. (1) | 2012.10.23 |
정규표현식 공식 및 응용 . (0) | 2012.05.08 |
기본JDBC 만들기 (0) | 2012.05.08 |
Tiles(레이아웃처리) (0) | 2012.05.08 |