JSP技巧篇---Excel报表呈现(1)
写於:2002/9/9 上午 10:54:13
常常有人问我,如果要把资料库的资料,以Excel的档案呈现在使用者的浏览器,该如何做?如果按照正常的方式,我会告诉你该去抓一些class来使用,学习这些class的复杂的方法;或者是透过jdbc-odbc bridge将资料塞入某个Excel档。
这些方法,有的过於复杂,有的需要安装额外元件,有的又只能在window平台下执行,有没有更简单的方法来实现这个构想?
你知道excel能读网页档吗?你可以试着把内含表格资料的网页档另存新档,副档名由.htm改成.xls,然後用excel开启看看,可以看到吗?这是不是给了我们一个构想,假设我们用jsp由资料库抓出资料出来,丢到使用者的浏览器,然後让他的浏览器以为接收到了一个.xls的档,浏览器便会呼叫excel开启这个其实是网页档的xls档,如此,就可以实现表格资料以excel报表的方式展现了!(很偷鸡摸狗吧!实在不够光明正大)
但是,问题在於如何让前端的浏览器以为我们送出的网页是xls档呢?这些资料都是由.jsp来处理的,浏览器怎麽可能会把.jsp当成.xls?我们就来看看怎麽做吧!
一、将网页资料以excel报表以线上浏览方式呈现
请按按钮观看呈现效果--
xls651.jsp原始码如下
<%@ page contentType="application/msexcel" %>
<!-- 以上这行设定本网页为excel格式的网页 -->
<%
response.setHeader("Content-disposition","inline; filename=test1.xls");
//以上这行设定传送到前端浏览器时的档名为test1.xls
//就是靠这一行,让前端浏览器以为接收到一个excel档
%>
<html>
<head>
<title>Excel档案呈现方式</title>
</head>
<body>
<table border="1" width="100%">
<tr>
<td>姓名</td><td>身份证字号</td><td>生日</td>
</tr>
<tr>
<td>李玟</td><td>N111111111</td><td>1900/11/12</td>
</tr>
<tr>
<td>梁静如</td><td>N222222222</td><td>1923/10/1</td>
</tr>
<tr>
<td>张惠妹</td><td>N333333333</td><td>1934/12/18</td>
</tr>
</table>
</body>
</html>
二、将网页资料以excel报表以下载的方式呈现,
请按按钮观看呈现效果--
这个jsp档和上一个差不多,只有差别在这一行:
线上浏览的方式:
response.setHeader("Content-disposition","inline; filename=test1.xls");
下载的方式:
response.setHeader("Content-disposition","attachment; filename=test2.xls");
附注:
1.以上纯以静态网页的方式呈现excel档,配合资料库,你便能以动态的报表方式做出excel报表了
2.完全不用安装任何元件,或只能受限於win平台,一个简单的方式解决你的报表需求
3.聪明的你,应该能举一反三,知道如何将网页资料以word的doc格式展现了吧!
(是不是只要把contentType改成"application/msword"以及filename的副档名改成.doc就可以了!)
本档案来自于:
http://www.jsp.mlc.edu.tw/viewitem.jsp?itemid=0000000065