通过ASP.NET实现到Word的导出方案的对比和疑问!!!
2004-08-05 16:28
381 查看
日前,本人正在进行一个Web项目的开发,使用ASP.NET完成。目前实现的报表模块,该报表是通过自行编程实现表格的输出,并通过微软的OWC技术实现Chart的生成。当用户看了这个部分的半成品后,又提出了需要将报表页面导出到Word或者Excel的功能性要求。
经过一个多星期的查询和探讨,对上面的要求提出了如下的实现方案的设想:
1.直接通过Java脚本另存,也就是把整个html文档都另存为doc。这样做的唯一优点就是简单省事,但是缺点是保存的文档包括很多额外的html标签(head,form,hiden等等),而且图片等等都是下载到files目录下的,用户还需要对下载下来的东西进行重新整理和排版。这样还不如就单纯允许用户导出Table和Chart,这就是第二种方法。
2.通过Response.Write将所需下载的控件的html标签另存为doc或者xls。这种方法现在从技术上已经解决,但是唯一无法实现的就是在一个doc中附带输出一个或多个Chart(因为下载的文件是一定的编码,而不能既是word,又是gif或者别的),只有分别另存。分开导出也容易实现到xls的导出,因为图片无法导出到xls吧!
3.通过调用“Microsoft Office 自动化”实现精确控制。通过Word或者Excel里面的宏录制来帮助实现编码,而且对于固定格式的文档还可以通过Template实现。但是,在经过对它在服务器端编程技术的深入探讨,发现该技术存在很多问题。而且微软不建议在服务器端使用该技术,而且也不提供技术支持。这些问题主要包括:降低安全级别来实现该技术;容易出现死锁的情况;需要经过一定配置来实现不同程度的自动化,而且有些配置之间也是相互矛盾的;等等(参见Microsoft Knowledge Base Article - 257757 《INFO:在服务器端自动运行 Office 的注意事项》)
4.在客户端通过“Microsoft Office 自动化”实现。这种方案对客户端有一定的要求,而且还要实现B和C之间的交互,有一定的技术难度和维护问题,同样有一定的风险;
5.通过Office2003对XML文件格式的支持,在服务器端构造这样的流,然后下载到客户端。这种方案在目前实现来看应该没有太大的技术困难,而且图文可以同时在一个文档中。但是这种方案在实现起来较为麻烦,而且对客户端使用的Office版本也必须是Office2003。
6.用户目前客户机都是Windows98和Office2000或者Office97。要支持早期版本就必须通过RTF格式的类型实现。但是RTF难以理解,构造起来也非常麻烦(例如图形必须根据大小分段)。
这6中方案有些不能很好的满足用户的需求,有些实现起来有交大的风险,有的则因为实现复杂。不知道各位有何其它方法???
经过一个多星期的查询和探讨,对上面的要求提出了如下的实现方案的设想:
1.直接通过Java脚本另存,也就是把整个html文档都另存为doc。这样做的唯一优点就是简单省事,但是缺点是保存的文档包括很多额外的html标签(head,form,hiden等等),而且图片等等都是下载到files目录下的,用户还需要对下载下来的东西进行重新整理和排版。这样还不如就单纯允许用户导出Table和Chart,这就是第二种方法。
2.通过Response.Write将所需下载的控件的html标签另存为doc或者xls。这种方法现在从技术上已经解决,但是唯一无法实现的就是在一个doc中附带输出一个或多个Chart(因为下载的文件是一定的编码,而不能既是word,又是gif或者别的),只有分别另存。分开导出也容易实现到xls的导出,因为图片无法导出到xls吧!
3.通过调用“Microsoft Office 自动化”实现精确控制。通过Word或者Excel里面的宏录制来帮助实现编码,而且对于固定格式的文档还可以通过Template实现。但是,在经过对它在服务器端编程技术的深入探讨,发现该技术存在很多问题。而且微软不建议在服务器端使用该技术,而且也不提供技术支持。这些问题主要包括:降低安全级别来实现该技术;容易出现死锁的情况;需要经过一定配置来实现不同程度的自动化,而且有些配置之间也是相互矛盾的;等等(参见Microsoft Knowledge Base Article - 257757 《INFO:在服务器端自动运行 Office 的注意事项》)
4.在客户端通过“Microsoft Office 自动化”实现。这种方案对客户端有一定的要求,而且还要实现B和C之间的交互,有一定的技术难度和维护问题,同样有一定的风险;
5.通过Office2003对XML文件格式的支持,在服务器端构造这样的流,然后下载到客户端。这种方案在目前实现来看应该没有太大的技术困难,而且图文可以同时在一个文档中。但是这种方案在实现起来较为麻烦,而且对客户端使用的Office版本也必须是Office2003。
6.用户目前客户机都是Windows98和Office2000或者Office97。要支持早期版本就必须通过RTF格式的类型实现。但是RTF难以理解,构造起来也非常麻烦(例如图形必须根据大小分段)。
这6中方案有些不能很好的满足用户的需求,有些实现起来有交大的风险,有的则因为实现复杂。不知道各位有何其它方法???
相关文章推荐
- 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField
- Asp.Net 重定向必须要知道的一些资料
- 用 Asp.Net 建立一个在线 RSS 新闻聚合器的方法
- Linux服务器操作系统加固方法
- 我的应聘总结!
- Microsoft Visual Studio .NET 2003制作安装程序
- 关于数据库备份的问题!
- 转载:易水寒写的自由网,走向free的极限
- B/S结构系统
- 一个画图类,类似ms_chart的线图,适用于科学仿真数据分析(二)
- 学ASP.NET学什么?
- 使用 .NET 框架将现有代码作为 Web 服务提供
- 移植到 Windows 2000 和 COM+
- 用VB和MTS开发多层数据库应用系统
- 用ASP备份数据库
- 关于FSO静态生成技术的应用范围之解决思路
- TreeView学习笔记