ASP.net生成Excel文件

做企业内部的一些信息管理系统,一般都离不开用到office,没办法,谁叫microsoft是老大。
做了近三年的企业信息建设,感觉就像整天跟Office在打交道。可能由于公司业务的特殊,所有经常要用文档数据跟其它公司交流,所以这两年什么word,Excel把我头都搞大。难过的是微软一直不太支持office的后台automate。前段开发的内部的一个业务系统,最终的数据都要生成Excel文件,我对Asp.net生成Excel也下了不少功夫,主要总结了下面几个方案。
 1.直接用response输出html格式:在后台组织好数据成Excel的Html格式,直接用response输入。这种方式生成的Excel格式比较单一,如果只要导出一些数据,对格式没有什么要求的话,它生成文件速度很快。最开始我就是采用这种方式,虽然格式不太好看,但用户要求的只要把数据导出就行,他们自己可以对格式做一定的加工。但后来发现了一个致命的问题,有的报表要求要分不同的worksheet,我研究了半天,这种方法确实不能支持分worksheet,只好换一种方式。
2.用com组件,在后台调用excel组件,生成Excel。B/S软件最好不要用这种方式,Excel进程很难完全清掉,特别是在出错的时候,甚至会让整个IIS   down掉。如果数据量大的情况下,速度也非常跟不上。优的是可以对Excel文件完全控制,任何复杂的格式都没有问题。
3.导出XML格式的excel:这种方式比较灵活,你可以预先把自己所要用到的格式定义到style段中去,我觉它对格式控制比较灵活。不足的是只有office2003或以上版本才支持xml格式,这要求客户端必须装excel2003。我是写了一个xlt模板,把数据转换成excel的xml格式。 但是这种方式不支持图片,没办法在文件插如图片之类。
4.第三方控件生成excel文件:这种方式我只是听说,没有尝试过。我担心第三方组件不可靠,并且它要收费。

后记:最近试用了一个开源的项目myxls(sourceforge上的项目),感觉确实不错。它是用二制的方式生成excel文件,可以用excel 97 -2003打开,并且速度很快。但美中不足现在的版本对excel中数据的格式,行离,以及合并单元格方面支持得不是很好。
posted @ 2007-11-11 20:03  飞不动  阅读(2788)  评论(3编辑  收藏  举报