728x90
반응형

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>
728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,