如何在ASP.NET中用OWC绘制图表(2)

asp.net|图表

OWC.aspx.vb:

Imports System
Imports OWC
Imports System.Web.UI

Public Class OWC
  Inherits System.Web.UI.Page
  Protected WithEvents ChartHolder As System.Web.UI.WebControls.PlaceHolder

#Region " Web 窗体设计器生成的代码 "

  '该调用是 Web 窗体设计器所必需的。
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

  End Sub

  Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
    'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
    '不要使用代码编辑器修改它。
    InitializeComponent()
  End Sub

#End Region

  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '在此处放置初始化页的用户代码
    '创建ChartSpace对象来放置图表
    Dim objCSpace As ChartSpace = New ChartSpaceClass()
    '在ChartSpace对象中添加图表,Add方法返回chart对象
    Dim objChart As WCChart = objCSpace.Charts.Add(0)
    '指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
    objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered

    '指定图表是否需要图例
    objChart.HasLegend = True

    '给定标题
    objChart.HasTitle = True
    objChart.Title.Caption = "1-6说数据分布图"

    '给定x,y轴的图示说明
    objChart.Axes(0).HasTitle = True
    objChart.Axes(0).Title.Caption = "Y 轴 : 数量"
    objChart.Axes(1).HasTitle = True
    objChart.Axes(1).Title.Caption = "X 轴: 月份"

    '计算数据
    '*categories 和 values 可以用tab分割的字符串来表示*
    Dim strSeriesName As String = "图例 1"
    Dim strCategory As String = "1" + ControlChars.Tab + "2" + ControlChars.Tab _
    + "3" + ControlChars.Tab + "4" + ControlChars.Tab + "5" + ControlChars.Tab _
    + "6" + ControlChars.Tab
    Dim strValue As String = "9" + ControlChars.Tab + "8" + ControlChars.Tab _
    + "4" + ControlChars.Tab + "10" + ControlChars.Tab + "12" + ControlChars.Tab _
    + "6" + ControlChars.Tab

    '添加一个series
    objChart.SeriesCollection.Add(0)

    '给定series的名字
    objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimSeriesNames,_
     ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName)

    '给定分类
    objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimCategories,_
     ChartSpecialDataSourcesEnum.chDataLiteral, strCategory)

    '给定值
    objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimValues,_
     ChartSpecialDataSourcesEnum.chDataLiteral, strValue)
    '输出成GIF文件.
    Dim strAbsolutePath As String = (Server.MapPath(".")) + "\Images\test.gif"
    objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350)

    '创建GIF文件的相对路径.
    Dim strRelativePath As String = "Images/test.gif"
    '把图片添加到placeholder.
    Dim strImageTag As String = "<IMG SRC='277_files/" + strrelativepath + "'/>"

    ChartHolder.Controls.Add(New LiteralControl(strImageTag))
  End Sub
  
End Class

下面是C#版本的OWC.asp.cs

ublic class owc: System.Web.UI.Page
{
  protected System.Web.UI.WebControls.PlaceHolder ChartHolder;

    private void Page_Load(object sender, System.EventArgs e)
    {
        // 在此处放置用户代码以初始化页面
    //创建ChartSpace对象来放置图表
    OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass ();

    //在ChartSpace对象中添加图表,Add方法返回chart对象
    OWC.WCChart objChart = objCSpace.Charts.Add (0);

    //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
    objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered;

    //指定图表是否需要图例
    objChart.HasLegend = true;

    //给定标题
    objChart.HasTitle = true;
    objChart.Title.Caption= "上半年分布图";

    //给定x,y轴的图示说明
    objChart.Axes[0].HasTitle = true;
    objChart.Axes[0].Title.Caption = "Y : 数量";
    objChart.Axes[1].HasTitle = true;
    objChart.Axes[1].Title.Caption = "X : 月份";

    //计算数据
    /*categories 和 values 可以用tab分割的字符串来表示*/
    string strSeriesName = "图例 1";
    string strCategory = "1" + '\t' + "2" + '\t' + "3" + '\t'+"4" + '\t' + "5" + '\t' + "6" + '\t';
    string strValue = "9" + '\t' + "8" + '\t' + "4" + '\t'+"10" + '\t' + "12" + '\t' + "6" + '\t';

    //添加一个series
    objChart.SeriesCollection.Add(0);

    //给定series的名字
    objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames,
    + (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);

    //给定分类
    objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimCategories,
    + (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);

    //给定值
    objChart.SeriesCollection[0].SetData
      (OWC.ChartDimensionsEnum.chDimValues,
      (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strValue);
    //输出成GIF文件.
    string strAbsolutePath = (Server.MapPath(".")) + "\\i\\test.gif";
    objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350);

    //创建GIF文件的相对路径.
    string strRelativePath = "./i/test.gif";

    //把图片添加到placeholder.
    string strImageTag = "<IMG SRC='277_files/" + strrelativepath + "'/>";
    ChartHolder.Controls.Add(new LiteralControl(strImageTag));
    }

    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
        //
        // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
        //
        InitializeComponent();
        base.OnInit(e);
    }
    
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);

  }
    #endregion
}

如果用ADO.NET的DataSet对象,可以生成以TAB分割的字符串:

strValue += (nodes.Item(j).ChildNodes.Item(0).InnerText + '\t');
strCategory += (nodes.Item(j).ChildNodes.Item(1).InnerText + '\t');

Microsoft.Office.Interop名称空间指向Office XP PIA,PIA应该事先安装到Web服务器上。编译源代码时要用到Office XP PIA OWC的DLL文件。如果用VS.NET编译,只要加入一个Microsoft.Office.Interop.Owc.dll文件的引用即可(位于解开Office XP PIA文件的目录),如果从命令行编译,必须按照下列方式使用/r:参数:

vbc /t:library /out:bin\getchart.dll /r:System.dll /r:System.Web.dll
   /r:System.Data.dll
   /r:C:\oxppia\Microsoft.Office.Interop.Owc.dll getchart.aspx.vb

上面的代码有许多值得一提的地方。首先,我们假定数据源位于MSSQL数据库OWCDEMO,该数据库有一个OWCDATA表,OWCDATA表有两个数值列,分别是X和Y。getchart.aspx的目标就是从数据库获取记录,然后用散点图(XY)描述这些数据。

OWC图表的数据点无法直接从ASP.NET的DataSet获取,因此,我们首先要把数据库的数据装入数组,然后用数组的数据填写OWC图表的数据点。如果要对本例作改进的话,最好开发一个ASP.NET服务器控件,它能够从抽象的数据源(包括DataSet对象、XML文件或数组)获取数据并生成XY散点图。

DataReader要比DataSet快速、高效,不过,我们首先要确定数据库中的记录数量,根据记录数量来调整数组的大小。为此,我们先用一个SQL Select count(*)查询获取记录数量,然后定义数组大小,最后用第二个SQL SELECT查询获取数据库记录。

如果我们要让散点图的各个点用折线连接起来,记录必须依照X轴排序,这通过一个SQL ORDER BY子句实现。

OWC的图表建立在“绘图空间”上。一个绘图空间可以包含一个或多个图表,每一个图表可以有一个或多个数据系列。在生成OWC图表时,我们首先创建一个绘图空间,将一个图表加入到绘图空间,设置图表的类型,添加数据系列,最后用数组的数据填写数据系列。

另外,我们还可以设置(可选)各种布局参数,例如颜色、坐标标题、图表标题、图例,等等。OWC提供了数百个布局参数,我们可以随心所欲地调整图表。当然,对于不同的图表类型,绘图模式也略有不同,例如,饼图和散点图的参数设置方法是不同的。在OWC 10安装包中有OWC帮助文件,里面详细说明了OWC图表模型。

最后,Response.BinaryWrite参数指定了要输出的图形类型(GIF),以及图形的宽度、高度(以像素为单位)。在这里,我们可以根据需要缩放从OWC图表生成的图形。

时间: 2024-08-17 16:05:45

如何在ASP.NET中用OWC绘制图表(2)的相关文章

如何在ASP.NET中用OWC绘制图表(1)

asp.net|图表 如何在ASP.NET中用OWC绘制图表 (1) 一.概述 二.设置图表引擎 三.OWC的许可证问题 四.OWC的运行机制 五.在Web服务器上安装OWC 10 六.OWC编程模式 ━━━━━━━━━━━━━ 正文: ━━━━━━━━━━━━━ 一.概述 在开发应用程序时,经常会遇到必须提供交互式图表的情况.例如,你可能在开发一个管理销售和产品数据的应用程序,数据保存在SQL Server数据库上,应用程序允许用户添加数据.更新现有数据,但除了这些功能之外,客户还要求应用程序

数据-asp.net引用owc绘制折线图、

问题描述 asp.net引用owc绘制折线图. asp.net引用owc绘制折线图,在本机运行没有问题,发布到IIS折线图数据没有根据条件发生变化 求解

如何在ASP.NET中用C#将XML转换成JSON

原文http://www.cnblogs.com/jaxu/p/3296148.html 本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用. 或许你可以直接利用JavaScript代码通过Ajax的方式来读取XML,然后直接对其中的内容进行解析,这样或许更直接一些.但本文中给出的代码旨 在说明如何通过原生的C#代码来完成这一转换.除此之外,你仍然可以借用一些第三方类库或者更高级一些的.NET库对象来实施转换.

如何在asp.net中用加密数据库联接字符串保证数据安全?

  在我们发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis -pc "hnlaw" -exp 其中"hnlaw"为密钥名称 2.添加web.config节点 在web.config的之间添加:   注意:这里keyContainerName="hnlaw"和name="

asp.net-ASP.NET中用owc创建的图片如何去掉默认的黑色边框

问题描述 ASP.NET中用owc创建的图片如何去掉默认的黑色边框 我用OWC创建了图表,可是它默认的图表有黑色边框,该如何去掉?

ASP 中利用OWC 服务器端组件动态生成图表

动态|服务器|图表 引:Web程序开发中,经常需要从数据库表文件中提取数据,并对大批量的数据进行分析比较,此时最常用也是最直观明了的表现方法莫过于绘制图表. ASP擅长服务器端的Web编程,操作后台数据库更是它的强项.但是用ASP制作实时数据库图表有点困难,因为ASP本身并不支持图表功能,只能借助第三方控件进行开发,如VB的MSChart 控件.而微软推出的实时数据库图表制作组件-- O W C(Microsoft Office Web Components),为在Web中绘制图形提供了灵活的同

ASP中利用OWC控件实现图表功能详解

控件|图表|详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法.OWC的更多功能,属性可参加MSOWCVBA.chm帮助文件(在office 2000的文件夹下大家自己找). testOWC.asp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <

如何在 Swift 3 中用 SpriteKit 框架编写游戏 (Part 1)

本文讲的是如何在 Swift 3 中用 SpriteKit 框架编写游戏 (Part 1), 你有没有想过要如何开始创作一款基于 SpriteKit 的游戏?开发一款基于真实物理规则的游戏是不是让你望而生畏?随着 SpriteKit[1] 的出现,在 iOS 上开发游戏已经变得空前的简单了. 本系列将分为三个部分,带你探索 SpriteKit 的基础知识.我们会接触到物理引擎( SKPhysics ).碰撞.纹理管理.互动.音效.音乐.按钮以及场景( SKScene ) .这些看上去艰深晦涩的东

ASP中利用OWC控件实现各种统计图

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>ASP中利用OWC控件实现各种统计图</title> </hea