分享
 
 
 

一种简单方法实现页面导出(Excel)功能 选择自 xieyun1977 的 Blog

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

要实现页面中的table导出成Excel格式,如果用jxl的API,未免太麻烦了些,这里我介绍一下我们项目中使用的简单的导出。

首先,介绍一下原理,Excel可以打开html文件这个大家应该都知道吧?(这个你都不知道?呵呵

)同样道理,一个只有table元素的html文件也可以在Excel中打开的,因此,我们可以利用页面中的Form的提交,把页面中的table内容提交给一个jsp或servlet,然后由jsp或servlet把提交上来的table内容转变成文件流的形式,以文件下载形式传递给客户端,由此完成导出Excel功能。

以下是查询jsp页面部分代码:

<script>

function saveResult()

{

var idx=document.all.userid.selectedIndex;

if (eval(document.resultFrame.resTbl)==null)

{

alert("请先查询后再保存!");

return false;

}

var file="日告警查询_"+document.all.datetime.value

+"_"+document.all.userid.options[idx].text;

document.all.name.value=file+".xls";

document.all.txt.value="<style>body,table {font-family: \"宋体\";font-size: 9pt}</style>"+document.resultFrame.resTbl.innerHTML;

warnForm.action="/downloadResult.do";

warnForm.target="saveFrm";

warnForm.submit();

document.all.name.value=file;

}

</script>

<html:form action="/warnDayQuery.do" target="resultFrame" >

<input type="hidden" name="name" value=""/>

<input type="hidden" name="txt" value=""/>

</html:form>

...

<!--

仅仅提供保存功能的iframe

//-->

<iframe name="saveFrm" src="" frameborder="0" scrolling="no" width="0" height="0">

</iframe>

...

<!--

查询结果

//-->

<iframe name="resultFrame" src="" frameborder="0" scrolling="yes" width="100%" height="500">

</iframe>

下面是查询结果的jsp部分代码:

//关键就是这个id号,可以代表要导出的table

<span id="resTbl">

<logic:notPresent name="dayResult" scope="session">

查询失败!

</logic:notPresent>

<table width="100%" height="10%" border="1" align="center" cellpadding="1" cellspacing="0" bgcolor="#EEECF2" bordercolor="#A3B2CC">

<logic:present name="dayResult" scope="session">

...

下面是作为中转的下载jsp服务代码:

<%@ page

language="java"

contentType="text/html; charset=GBK"

import="java.io.*,java.net.URL,java.util.*"

%>

<%

String file =null;

StringBuffer sb=null;

for (Enumeration e = request.getParameterNames(); e.hasMoreElements(); ) {

String name = (String) e.nextElement();

//System.out.println(" >>Name: "+ name);

//System.out.println(" >>>Parameter: "+ request.getParameter(name));

if(name.equals("name"))

file=request.getParameter(name);

if(name.equals("txt"))

sb=new StringBuffer(request.getParameter(name));

}

try {

file = new String(file.getBytes("ISO-8859-1"), "gb2312");

}

catch (UnsupportedEncodingException e) {

out.println("文件名解析失败!");

return;

}

String extName = file.substring(file.lastIndexOf("."));

String contentType;

if (extName == null || extName.equals("")) contentType = "";

else if (extName.equalsIgnoreCase(".chm")) contentType = "application/msword";

else if (extName.equalsIgnoreCase(".doc")) contentType = "application/msword";

else if (extName.equalsIgnoreCase(".xls")) contentType = "application/vnd.ms-excel";

else if (extName.equalsIgnoreCase(".ppt")) contentType = "application/vnd.ms-powerpoint";

else if (extName.equalsIgnoreCase(".txt")) contentType = "text/plain";

else contentType = "application/octet-stream";

// "inline" or "attachment" (default)

/*String mode = request.getParameter("mode");

recommendedName = request.getParameter("recommendedName");

if (mode == null || mode.length() == 0) mode = "attachment";

*/

String recommendedName = new String(file.getBytes(),"iso_8859_1");

response.setContentType(contentType);

response.setHeader("Content-Disposition", "attachment; filename=" + recommendedName + "\"");

response.resetBuffer();

ServletOutputStream sos = response.getOutputStream();

/*

String s = null;

while ((s=br.readLine())!=null) {

sos.print(s);

}

*/

sos.write(sb.toString().getBytes("ISO-8859-1"));

sos.flush();

sos.close();

%>

你也可以做成servlet形式,怎么样,这样的Excel导出是不是很简单阿?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有