ITPub博客

首页 > Linux操作系统 > Linux操作系统 > “How to Save Report To Excel” 技术改进

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

原创 Linux操作系统 作者:leniz 时间:2009-10-23 10:40:03 0 删除 编辑

昨天做了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 设置目录
请登录后发表评论 登录
全部评论

注册时间:2008-05-31

  • 博文量
    448
  • 访问量
    1128277