[转载]“在ASP.NET程序中以高效、轻量方式生成格式丰富的Excel文件”方案!

原作者: myprojects@126.com

在ASP.NET程序中可以使用COM编程来生成Excel文件,但是使用COM组件需要在服务端安装Excel程序和配置COM组件,而且还要强制杀死Excel进程,这样对系统的部署和性能都不够理想。所以希望大家推荐一下自己使用过的好的控件或者方案,要求如下:
1.   生成的Excel文件可以设置格式:
a.   必须支持字体大小、颜色、合并单元格等设置;
b.   最好能支持页边距、的设置;
c.   最好能支持Excel文件横向、纵向设置;
d.   最好能支持Excel模板文件的加载;
e.   但是不必支持图表的显示和绘制,也就是说Excel文件中只需要显示文字。
2.   服务端不用安装Excel程序;
3.   生成的excel文件在客户端打开的时候至少能兼容Excel2003,Excel   XP,最好还能兼容Excel2000。
4.   性能比较好;
5.   最好是可用的开源控件或者是完整可用的源代码;退而求其次是功能不受限制的免费控件;再次是功能受限制的免费控件;最后是破解控件也行(当然,你需要告诉我们破解的方法和工具,我的邮箱:hawk_yinjun@yahoo.com.cn)。

我把目前我使用过的或者找到的方案罗列和总结一下(但这些方案都或多或少没有满足上面提到的要求),有说得不对的地方大家指正:
1.Excel的COM编程
优点:
能编程实现Excel文件的各种格式功能,还支持图表、模板等。
缺点:
a.   重量级方案,部署不方便,需要在服务端安装Excel程序和配置COM;
b.   需要强制杀死Excel进程;
c.   性能低下。
我的感觉:
在C/S中可以考虑使用此方案,在B/S中根本就不用考虑这个方案。

2.   HTML导出
优点:
a.   轻量级方案,服务端不用安装Excel程序。
b.   实现简单、方便。
缺点:
a.   不支持Excel文件格式的设置。
我的感觉:
这个方案在网上有相当多的例子,比如gridview导出到excel就用此方法。
如果导出的是纯数据而不需要设置Excel文件的任何格式,那么此方案是可行的。但是,如果需要设置一定的格式,则此方案显然不行。

3.   生成XML然后转换成Excel方式
参考资源:http://www.codeproject.com/office/Excel_Export.asp?df=100&forumid=329437&fr=51
优点:
a.   服务端不用安装Excel程序。
b.   支持一定的Excel文件格式设置,比如字体大小、颜色、合并单元格等。
缺点:
a.   与Excel   2000不兼容:由于Excel   2000不支持XML,所以以这种方法生成的Excel文件可能在Excel2000中不兼容(毕竟目前还有不少用户的电脑装的是Excel   2000)。
b.   可能不支持Excel文件页边距的设置;不支持Excel文件横向、纵向的设置;不支持Excel模板;
c.   编程工作量比较大;
d.   生成的文件本质上是XML文件,需要“另存为xls”才能变成真正的Excel文件。
e.   性能是好是坏还不清楚,目前还没真正在项目中用过。希望有用过此方案的朋友能介绍一下这个方案的性能。
我的感觉:
如果生成的Excel文件不需要设置复杂的格式(也就是说只需要设置一些简单的格式),这个方案是可行的。

4.   以二进制的形式编程写Excel文件
这种方案涉及底层的东西,我们不用考虑。

5.付费控件
5.1   GemBox控件
http://www.gemboxsoftware.com/Index.asp
优点:
几乎满足前面提到的所有要求,除了有一个缺点以外。
缺点:
GemBox是付费控件,而且价格不便宜。
它同时提供免费版本的控件(http://www.gemboxsoftware.com/GBSpreadsheetFree.htm),但是功能受到严重限制:一个Excel文件最多只能生成5个WorkSheet,每个WorkSheet最多生成150行数据。
如果你有破解版本或者知道如何破解,希望你能共享(我的邮箱是hawk_yinjun@yahoo.com.cn)
我的感觉:
我已经在一个项目中使用这个免费版本的控件,感觉非常不错。如果生成的数据少于150条,那么使用这个控件非常合适,但是如果数据数量超过150条,那就只能放弃。

5.2     Aspose.Excel
和GemBox差不多,几乎满足前面提到的所有要求。就是付费软件。
我的感觉:
以前曾经有个朋友推荐我使用这个控件的破解版本。但是奇怪的是:用注册机在一台服务器上生成的注册码能用,但是在另一台服务器上用同样的方式破解就不行,后来就放弃使用这个控件,因为我担心的是这个破解控件在开发用服务器上能运行,不能确保部署到客户生产服务器上也会正常运行。可能是我破解不当,如果你有这方面的使用经验请慷慨介绍。

6.   开源控件或者功能不受限制的控件
目前还没找到合适的,希望大家尽情推荐。
posted @ 2008-03-29 10:38  船夫水手  阅读(441)  评论(0编辑  收藏  举报