原作者:
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. 开源控件或者功能不受限制的控件
目前还没找到合适的,希望大家尽情推荐。
转载于:https://www.cnblogs.com/hawk0450/archive/2008/03/29/1128560.html