总述
在数据分析和生成报表方面,Excel是一款非常强大的工具。嵌入VB.NET里可以做在Excel下做的工作。在财务行业工作的人都知道不管怎样Excel已被广泛使用。在Excel下工作时,商业人员往往比开发人员更熟练地使用Excel。在很长一段时间,软件将向分布式计算和N层结构发展。过去,当数据被存储在Access数据库或一般文件中,我们会手工地将数据输入到Excel文件中并利用这些数据去做一些商业运作。在Internet自动化对象应用的今天,这篇文章聚焦于怎么得到最好的信息。
Excel and ASP.NET
Excel的自动化对象和用VB写Excel宏并不是本文的标题。在网上有很多网站和资源有这方面的资料。这篇文章仅讨论怎样在Internet环境(ASP.NET)下使用Excel。
目的
这篇文章的目的主要是介绍在ASP.NET下Excel的数据分析功能应用。本文将聚焦于怎样在internet上得到最好的Excel模板和快速地反应数据。
关于例子
本文大体上具有教育目的,在例子中的方法并不一定能直接用于实际的产品环境下。本文主旨在于揭示做ASP.NET和Excel时的一些方法和概念。
例1,Excel报表演示(输出HTML)[此文中源码]
安全
本文和例子是基于服务端Excel的自动化对象。这个方法有一些缺点和需要注意的地方。请查看本文“附加的源码”。如果Excel自动化对象没有被正确地用于当前的WEB服务器上,可能会得到WEB服务器不一致的状态。请注意这些地方,并尽量僻免。
关于Excel 2003的注意事项: Excel 2003有为支持DOTNET的较好的接口。在微软网站上有很多关于Excel 2003和DOTNET的文章。此文中也有些链接。如果你有Excel 2003,本文仅能帮你了解一些概念。
快速浏览
许多第三部分的资料库的帮助可能被建立为较好的在提供图解/曲线图或报表的Internet应用。在这个文章中提议的方法对那些已广泛使用Excel及报表的商业中。通过使用已有的Excel报表模板和通过Internet表现出来。主观地说,当没有更好的解决方案被开发出来,这个方法被当作快速解决方案考虑过。
例子 - Excel报表演示
本文提供的例子是跟据已有的Excel文件建立报表。这个例子也可以从Excelt生成饼图或3D列表图表。最后的报表可以生成为Excel或Html格式。
安装并运行下面的例子
·下载?362 KB) 并解压到本地。http://www.asp101.com/articles/jayram/exceldotnet/EXCEL_REPORTING_IN_ASPNET_SAMPLE.zip
·用IIS建立虚拟目录'ExcelReportDemo',同时把目录指向解压的文件夹。
·运行处执行"dcomcnfg.exe"[DCOM配置工具]
·你将看到 'Distributed COM Configuration Properties' 的窗口
·在'Applications'列表框中双击'Microsoft Excel Application'
·选择'Security'标签
·选择'Use Custom Access Permission'单选框,点‘Edit’按钮
·在'Registry Value Permissions'窗口中确定添加了本地'ASPNET'用户或是本机中能运行ASP.NET进程的用户。
·添加 ASPNET用户后点击OK
·选择'Use Custom Launch Permission'单选框,点‘Edit’按钮
·在'Registry Value Permissions'窗口中确定添加了本地'ASPNET'用户或是本机中能运行ASP.NET进程的用户。
注意:
DCOMCNFG.EXE工具是配置DCOM applications的。在这个例子中,ASP.NET用EXCEL自动化对象并调用Excel Application。通过缺省的本地'ASPNET'用户,特有的ASP.NET进程(并不是扮演被使用的.net的角色)。因此,赋予正确的登录DCOM 'Microsoft Excel Application' 权限给ASPNET用户是很重要的。否则,运行这个例子后,当Excel Application对象被调用时,会抛出'Access Denied'的异常。
软件环境需求:
·Excel 2000 (Version 9.0) [如果你有 Excel 2002 (Version 10.0),请查看例子中的注释部分。
·ASP.NET / .net Framework [Version 1.0或以上版本]
例子的操作流程:
·商业用户把用作报表的Excel电子数据表的复本给开发人员。
·在商业用户的帮助下,开发者排除所有对Excel文件直接的访问再通过Excel文件里的工作表数据驱动报表
·开发者把这个议论放于'ExcelReportDemo'项目的'ReportTemplates'目录下。
·理解了数据源后,开发者查询运行时的数据,并把静态数据代替实际数据的Excel工作表
·excel让我们在工作中得到休息
·如果终端用户请示HTML格式,Excel输出界面挥糜谏蒆TML格式的报表
例子中用到的技术
·ASP.NET用Excel自动化对象调用Excel
·从简单的XML文件读出数据装载。实事上数据可以来自于SQL SERVER或ORACLE数据库。
·自从Excel 2002被用于这个例子,数据集被逐列地复制到Excel。这种被认为是很简单元方法,在传输数据方面是个很有效的方法。
·通过Excel自动化对象是可以访问图表对象和改变图表的所有属性。这个例子并没有用Excel自动化对象去做扩展。
例2:Excel报表演示 - 显示报表请示页面
测试例子: (例2显示报表请示页面)
·在测试例子前,请按照这个列子的安装说明检查。
·把地址http://localhost/ExcelReportDemo/RunReports.aspx输入到地址栏。
·选择'Report Format' [Excel 或 HTML]
·点按钮'Run Report'运行报表
·点按钮'Additional Resources',显示描述服务端自动化对象的附加源码和Excel程序。
·例显示简单的HTML格式报表。
产生临时文件
报表被请求时,这个例子将生成几个临时文件。简单的代码不能与任何自动清理script代码一起进行。请手工删除或编写WMI scripts代码或.bat文件.这些代码或文件不能被WINDOWS调度程序调度去进行自动清理工作。这个代码或文章不能用于简单的部分。
感谢
我要感谢我的夫人Sheela Tallamraju帮助编辑此文。我也要感谢支持我写此文件的Tom Montgomery和Praveen Ray。
附加的资源:
·服务端自动化对象的注意事项 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q257757
·服务端图表 http://support.microsoft.com/default.aspx?scid=kb;EN-US;244049
·来自ADO/ASP的Excel数据 http://support.microsoft.com/default.aspx?scid=kb;EN-US;244049
·WEb页面上操作工作表的函数 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexcl2k/html/webfunc.asp
·Office Web组件应用例子http://support.microsoft.com/default.aspx?scid=kb;EN-US;258187
·服务端Office web组件的限制 http://support.microsoft.com/default.aspx?scid=kb;EN-US;317316
·ADO.net和EXCEL (2003) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrwlkusingadonettoexchangedatawithdatabase.asp
关于作者
Jayram Tallamraju 是一位软件构架师,在波士顿为Bisys Hedge Fund工作的系统分析员,和文件硕士。他是.net MCP(微软认证专家), MCSD(微软认证解决方案开发专家)和SCJD(Sun认证Java开发专家).他还获得电子学硕士,在软件待业工作了十年。他曾主攻构建服务体系和构建可重复使用的商业组件。现在,他的研究领域是微软的技术,有.NET, C#, Web services, ASP.NET, VC++/VB, COM/DCOM, ASP/IIS.
Email: tjayram@yahoo.com