65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 OWC11 在 ASP.NET 中进行服务器端绘图

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.26/5 (18投票s)

2004年6月10日

5分钟阅读

viewsIcon

296390

downloadIcon

14983

使用 OWC11 在 ASP.NET 中进行服务器端绘图

引言

在客户端-服务器应用程序中,例如公共商业网站和私有企业内部网站点,图形化报告是一项常见需求。通常,当我们有一些数据用于预测周期性销售数据或利润和亏损幅度时,这显然是一个在一段时间内总结数据的图形化报告的使用场景。

在这种情况下,如果是一个 Windows 应用程序,我们可以在每台机器上安装一些图形库来生成图表。而在 Web 应用程序中,浏览器的类型和版本决定了客户端的能力。在这里,我们有两种选择:

  • 客户端绘图 &
  • 服务器端绘图

在客户端绘图中,客户端需要在机器上安装一个绘图引擎和一个支持的浏览器。这将有助于实现客户端交互式绘图以及浏览器内的 Windows 功能。但缺点是,客户端软件的分发和设置会很复杂。而且通常每个客户端的许可证成本会增加。

而在服务器端绘图中,只需要服务器安装绘图引擎,并且图表可以动态生成并以 gif 或 jpeg 的形式流式传输到客户端。这具有成本效益,并且客户端的任何普通浏览器都足够了。但缺点是,无法提供交互式绘图,并且客户端数据的任何更改或刷新都会导致向服务器发送请求并重新生成图表。

本文重点介绍 ASP.NET 环境中的服务器端绘图。同时,它还强调了 OWC11 对象模型和将数据绑定到图表的不同选项。

为什么选择 OWC?

在 ASP.Net 环境中,我们有几种生成图表的方法。其中一些如下:

  • 使用 ASP.Net 内置图形库 (System.Drawing)。
  • 使用现有的绘图引擎,例如,
    • MS-Excel 绘图引擎
    • Crystal Reports 绘图引擎
    • Dundas Chart Control for ASP.Net
    • Mycos Charts .Net Web Forms Edition
    • netCharting 等等。

使用 ASP.NET 内置图形库是最繁琐的任务,需要大量的设计和实施工作来显式绘制图表和开发所需组件。

至于现有的绘图引擎,大多数都相当昂贵且外观陌生。其中,MS Excel 绘图引擎是市场上使用最广泛、功能最强大的引擎之一。

由于 MS Excel 是一个广泛使用的应用程序,微软提出了在 Web 上提供类似 Office 功能的新想法。这通过“OWC – Office Web Components”来实现,它也是我们当前文章的核心。

历史

OWC 的第一个版本 OWC9 随 MS-Excel 2000 和 MS-Front page 2000 一起发布。OWC9 提供了任何 Web 应用程序都可以使用的最少必需的绘图功能。后来,下一版本 OWC10 或 OWCXP 随 MS-Office XP 一起发布。虽然 OWC9 和 OWC10 之间没有太大区别,但第二个版本包含了一些有趣的函数,用于优化生成和保存图表的性能,以及一些用于改善图表外观的新属性。现在,最新版本 OWC11 随 MS-Office 2003 一起发布。此 OWC11 具有一些非常有趣的功能,例如 XML 支持等。

许可问题

关于 OWC11 的许可问题,我们应该拥有 MS-Excel 2003 或 Front Page 2003 的许可证。而且,当我们将 OWC11 用于客户端绘图时,服务器和客户端都需要许可证。而当我们将 OWC11 用于服务器端绘图时,则只需要服务器有许可证。

如何使用 OWC?

OWC 是一个 COM 组件,包含四个 ActiveX 控件。

  • Spreadsheet 控件
  • Chartspace 控件
  • Pivottable 控件 &
  • Datasource 控件

OWC 可以通过在客户端系统上安装来用作客户端技术,也可以通过仅在服务器上安装来用作服务器端技术。在服务器端,核心将集中在 OWC 的编程用法上,以动态生成图表。使用 OWC Chartspace 组件,可以在服务器内存中生成图表,然后作为 HTTP 请求的响应,流式传输到客户端浏览器(gif 或 jpeg 格式)。因此,在服务器端使用 OWC11,我们只需要最感兴趣的绘图功能。

在 ASP.Net 中,需要一个 OWC11 Interop 程序集,它充当 RCW (Runtime Callable Wrapper)。此 Interop 程序集可以通过两种方式生成:

  1. 使用 .Net 命令行实用程序“Tlbimp”。

Tlbimp owc11.dll /out:Interop.owc11.dll

  1. 使用 MS Visual Studio .Net。当我们将 OWC11 COM 组件选为我们 ASP.Net Web 应用程序的引用之一时,.Net IDE 会直接创建包装器。

现在,我们有两个步骤来生成图表。

第一步涉及声明一个 owc11.Chartspace 对象,并将一个图表对象添加到 chartspace.charts 集合对象中。稍后,我们可以根据需要向图表对象的 seriescollection 对象添加任意数量的数据系列。最后但同样重要的是,我们可以对图表的 Axes、Borders 和 Interior 以及 chartspace 等进行一些格式化。

第二步涉及将此图表保存为物理图像文件(如 gif)或直接将其流式传输到 Image 控件。通过将 chartspace 对象导出到所需文件并以所需分辨率导出,可以完成将图表保存到 gif 文件。

而流式传输需要一些不同的设置。我们必须将所有生成图表的代码放在一个不包含 HTML 内容的 aspx 页面的代码隐藏中。此 aspx 页面可以作为 Image 控件的图像源放在任何其他页面上。在此 aspx 页面中,生成图表后,我们必须使用 Chartspace 的 GetPicture 方法将图表直接推送到 Image 控件。

这样,我们就可以在服务器上动态生成图表并将其推送到客户端。这种方法将使编码更简单,提供更多的格式选项,并加快图表的生成速度。

OWC11 绘图引擎对象模型

在 OWC11 中,绘图引擎通过 Chartspace ActiveX 控件暴露出来。这与 Visual Studio 附带的图表控件有些类似。

简化的 Chartspace 对象模型如下:

下载详情

OWC11 可在 Microsoft 网站免费下载,链接如下:

© . All rights reserved.