“How to Save Report To Excel” 技术改进

昨天做了WAD采用JS导出Excel的方案,虽然结果已经Ok,但是感觉太复杂了,非要整出两个表来,一个显示,一个作为导出用。 所以今天考虑如何在一个报表中,实现两个功能,即可看可导。

首先,导出的报表因为采用了样式表的类,所以导出后没有颜色了,因为类导出后就成了废物了。 于是重点放在如何将样式内嵌到标签中。因为我关注的是背景色,所以我做了如下的修改:

  $("td").each(function(i){
     bg_color = $(this).css("background-color");
     $(this).css("background-color",bg_color);
  });

就是把样式表中的颜色,提到标签中,这样不会影响表的展示,但是有利于表导出后有对应的背景颜色。这个改进,实现了背景色全灰的问题。这段代码可以放在报表展示时就执行,免得导出时执行影响用户心情。

接下来要解决的是如何去除超级链接。我想到了正则表达式,不过学艺不精,我原向对类似 110 ,能够一次替换成 110把前后两个标签拿掉,但是不知道如何写,所以我采用分别拿掉 和的方法去做:

     var reg  = new RegExp("]*>","ig"); 
     var reg1 = new RegExp("","ig");
     var uttext = document.all('table1').outerHTML;
     uttext = outtext.replace(reg,"");
     uttext = outtext.replace(reg1,"");

这个段代码可以放在导出中执行。 这样导出后的单元格就不会有烦人且无用的超级链接了。 还有一个问题就是,导出后的格子之间最好有线框(用户没有说,但是我们想到了)。于是考虑能否用正则法则。 因为导出要有格线,必须对td标签加边框,所以我做了如下修改。

var reg2 = new RegExp("

outtext = outtext.replace(reg2,"

于是完整的导出函数如下:

 function bringtoexcel(){
     var reg  = new RegExp("]*>","ig"); 
     var reg1 = new RegExp("","ig");
     var reg2 = new RegExp("

     var uttext = document.all('table1').outerHTML;
     uttext = outtext.replace(reg,"");
     uttext = outtext.replace(reg1,"");
     uttext = outtext.replace(reg2,"    
     window.clipboardData.setData("Text",outtext);
     var ExApp = new ActiveXObject("Excel.Application")  
     var ExWBk = ExApp.workbooks.add()   
     var ExWSh = ExWBk.worksheets(1)   
     ExApp.DisplayAlerts = false   
     ExApp.visible = true    
     ExWBk.worksheets(1).Paste; 
 }

测试OK,可以休息一下了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/554557/viewspace-617255/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Word 设置目录
user_pic_default.png
请登录后发表评论 登录
全部评论
<%=items[i].createtime%>

<%=items[i].content%>

<%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%=items[i].items.items[j].createtime%> 回复

<%=items[i].items.items[j].username%>   回复   <%=items[i].items.items[j].tousername%><%=items[i].items.items[j].content%>

<%}%> <%if(items[i].items.total > 5) { %>
还有<%=items[i].items.total-5%>条评论 ) data-count=1 data-flag=true>点击查看
<%}%>
<%}%> <%}%>

转载于:http://blog.itpub.net/554557/viewspace-617255/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值