jsp页面表格数据导出到excel

在程序猿的日常工作中经常会遇到这样的问题,如何将jsp页面表格中的数据导出到excel中?

我所知道的第一种方法是

<script type="text/javascript">
    function method1(tableid) {//整个表格拷贝到EXCEL中
     var curTbl = document.getElementByIdx_x(tableid);
     var oXL = new ActiveXObject("Excel.Application");
     //创建AX对象excel
     var oWB = oXL.Workbooks.Add();
     //获取workbook对象
         var oSheet = oWB.ActiveSheet;
     //激活当前sheet
     var sel = document.body.createTextRange();
     sel.moveToElementText(curTbl);
     //把表格中的内容移到TextRange中
     sel.select();
     //全选TextRange中内容
     sel.execCommand("Copy");
     //复制TextRange中内容 
     oSheet.Paste();
     //粘贴到活动的EXCEL中      
     oXL.Visible = true;
     //设置excel可见属性
 }
</script>

不过这种方式的局限性很大,火狐和谷歌浏览器基本上就等于废了,而且ie使用时还要修改安全性设置,这是很不方便的。
除此之外还可以采取下面这种方式:在jsp页面的头部加上这么一段:

<% 
  String wjm="student.xls"; 
  response.setContentType( "application/vnd.ms-excel;charset=gbk");  
  response.setHeader("content-disposition","attachment; filename=" +wjm ); 
  %>

wjm是你所要导出的excel表格的名字,使用这种方法,当你打开一个链接指向该页面时,浏览器就会提示下载excel表格,你就可以以excel的形式保存到本地了。这种方式可以适用于各种浏览器,只是这样你无法在当前页面看到数据表格的内容,因为你打开该页面就直接提示下载了。怎么解决这个问题呢?我是这么解决的:

<a href="showUser.jsp">点击导出通讯录</a>
<jsp:include page="showUser.jsp"></jsp:include>

这样你就可以在当前页面看到包含表格的那个页面,而且点击链接时就可以下载了。
有时候我们所要包含进来的页面是用过struts的action处理过返回的页面,如果直接包含action所指向的页面的话,可能在页面上只能看到表头部分而没有数据了,这又该怎么处理呢?
我想到的是使用ajax的方式:

function init(){
        $(function(){
                $.ajax({
                    'async': false,
                      type : "post", 
                       url :"showUser.action", 
                    success : function(msg) { 
                         $("#result").html(msg);
                       } 
                });
            });
    }
<body οnlοad="init()">
 <a href="showUser.action">点击导出通讯录</a>
<div id="result"></div>
  </body

这样处理当页面加载时就会先到后来请求数据,然后把得到的数据通过ajax的方式放入自己设定的div中,这样问题便得到了解决。
上述的这些方法只能处理一般的数据表格,即你希望保存的excel表格和你在页面看到的样式一致,你可以采取上面的方法,因为上面的方法会将页面上的东西全部拷贝到excel中,页面会很不美观,如果你需要处理的表格非常复杂的话可以使用poi,这是一个专门处理office导出导入的jar包,具体事例可以参考该项目 POI插件表格导出案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值