查看: 1555|回复: 1

ASP.NET2.0轻松搞定统计图表

[复制链接]

该用户从未签到

发表于 2008-6-6 16:31:23 | 显示全部楼层 |阅读模式
分享到:
本文讲述如何绘制条形图折线图柱形图面积图等常见图形。

效果图

手把手教程:

原理:OWC是Office   Web   Compent的缩写,即Microsoft的Office   Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制。在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE6和Office   2000/XP/2003),那么就有能力利用Office   Web组件提供一个交互式图形开发环境。这种模式下,客户端工作站将在整个任务中分担很大的比重。理论上说Excel能做的图都可以通过OWC画。

第一步:
右键点击网站根目录引用。如图所示:

第二步:
点击“添加引用”后弹出一个窗口,添加OWC的引用。如图所示:

点“确定”。

第三步:
代码中引用Microsoft.Office.Interop.Owc11。

全部代码
后台代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;   //添加数据操作引用
using Microsoft.Office.Interop.Owc11;//添加Office组件引用

public partial class OWCdrawing : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {

    //连接数据库并获取特定字符串
    string strSeriesName = "图例1";
    string ConnectString = "Server=(local);DataBase=web;Uid=sawd=sa";
    string Sql = "SELECT month,Allcount FROM Chart";
    SqlConnection myConn = new SqlConnection(ConnectString);
    myConn.Open();
    SqlDataAdapter Da = new SqlDataAdapter(Sql, myConn);
    DataSet ds = new DataSet();
    Da.Fill(ds);

<span style="font-size: x-small">    //存放月
    string[] MonNum = new string[12];
    //存放数据
    string[] MonCount = new string[12];
    //为数组赋值
    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
        MonNum = ds.Tables[0].Rows[0].ToString();
        MonCount = ds.Tables[0].Rows[1].ToString();
    }
    //为x轴指定特定字符串,以便显示数据
    string strXdata = String.Empty;
    foreach (string strData in MonNum)
    {
        strXdata += strData + "\t";
    }
    string strYdata = String.Empty;
    //为y轴指定特定的字符串,以便与x轴相对应
    foreach (string strValue in MonCount)
    {
        strYdata += strValue + "\t";
    }
    //创建ChartSpace对象来放置图表
    ChartSpace laySpace = new ChartSpaceClass();

    //在ChartSpace对象中添加图表
    ChChart InsertChart = laySpace.Charts.Add(0);

    //指定绘制图表的类型。类型可以通过OWC.ChartChartTypeEnum枚举值得到
    //InsertChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图
    //InsertChart.Type = ChartChartTypeEnum.chChartTypeArea;//面积图
    //InsertChart.Type = ChartChartTypeEnum.chChartTypeBarClustered;//条形图
    InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//柱形图

    //指定图表是否需要图例标注
    InsertChart.HasLegend = false;

   
    InsertChart.HasTitle = true;//为图表添加标题
    InsertChart.Title.Caption = "2006年清清月儿每个月花销流水账";//标题名称

    //为x,y轴添加图示说明
    InsertChart.Axes[0].HasTitle = true;
    InsertChart.Axes[0].Title.Caption = "";//月份
    InsertChart.Axes[1].HasTitle = true;
    InsertChart.Axes[1].Scaling.SplitMinimum = 200;
    InsertChart.Axes[1].Title.Caption = "数量";

    //添加一个series系列
    InsertChart.SeriesCollection.Add(0);

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

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

    //给定值
    InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
    //输出文件.
    string strAbsolutePath = (Server.MapPath(".")) + "[url=file://ShowData.gif/]\\ShowData.gif";
    laySpace.ExportPicture(strAbsolutePath, "GIF", 400, 250);

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

    //把图片添加到placeholder中,并在页面上显示
    string strImageTag = "";
    this.PlaceHolder1.Controls.Add(new LiteralControl(strImageTag));
  }
}

前台代码




  清清月儿<a href="http://blog.csdn.net/21aspnet/title" target="_blank">http://blog.csdn.net/21aspnet


 
 

           
         
            怎么样在ASP.NET2.0中使用OWC组件画图
       
       
         
   
         
       
       
       
   
 
 


 



数据库SQL脚本
USE [web]
GO
/****** 对象: Table [dbo].[Chart]   脚本日期: 03/27/2007 22:26:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Chart](
[id] [int] IDENTITY(1,1) NOT NULL,
[month] [smallint] NULL,
[Allcount] [int] NULL
) ON [PRIMARY]

在数据库建好表以后要自己手动假想有12条数据,手动添加,最终结果类似下图:

后台程序说明:
最关键就是InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;

你可以在ChartChartTypeEnum后出其他方法。如图所示:

下面列出的是其他类型图:

折线图:


面积图:

条形图:


OWC什么图形都可以画,还能画立体的,请大家自己尝试。

可以参考OWC手册,具体位置:
C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052\OWCVBA11.CHM

回复

使用道具 举报

该用户从未签到

发表于 2008-6-7 21:03:56 | 显示全部楼层

RE:ASP.NET2.0轻松搞定统计图表

谢谢你的资料
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

手机版|小黑屋|与非网

GMT+8, 2025-1-10 03:40 , Processed in 0.110881 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.