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;
}
%>

JQuery 이용해서 Excel 파일로 저장하기. javascript  ASP

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가 자주 변경되면 그것 또한 짜증이였다.

 

 <%
 Response.Buffer = true
 Response.AddHeader "Content-Disposition","attachment;filename=each_week_data.xls"
 Response.ContentType = "application/vnd.ms-excel"
 Response.CacheControl = "public"
%>

해서. 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()" /> <!--엑셀 저장 버튼-->

<!--엑셀로 저장-->
<form action="a_e.asp" method="post" target="_blank" onsubmit='$("#excel_val").val($("#excel_view").html())' id="exe">
 <input type="hidden" name="excel_val" id="excel_val" />
</form>
<script type="text/javascript">
    function excel_save(){
    $("#exe").submit();
    }
</script>
<!--엑셀로 저장 끝-->


 

a_e.asp

 

<%
 Response.Buffer = true
 Response.AddHeader "Content-Disposition","attachment;filename=each_week_data.xls"
 Response.ContentType = "application/vnd.ms-excel"
 Response.CacheControl = "public"
%>

<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<style type="text/css">
body {font-family:tahoma;font-size: 12px}
table {padding:2px;border-spacing:0px;font-family:tahoma;font-size: 12px;border-collapse: collapse}
input,textarea,Select {font-family:tahoma;font-size: 12px;border-collapse: collapse;}
.bgc {background-color:#dddddd}
.bgct {background-color:#FAF082}
td {text-align:center}
br {mso-data-placement:same-cell;}

</head>
<body>
<%=request("excel_val")%>
</body>

 


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
Posted by 사라링
BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
디자인패턴 (1)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
웹스퀘어_ (0)
Total :
Today : Yesterday :