查看: 6213|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-21 15:32:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
本文讲述如何绘制条形图,折线图,柱形图,面积图等常见图形。

效果图:



手把手教程:

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

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



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



点“确定”。

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

全部代码
后台代码:
  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;

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

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

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

  25.         //存放月
  26.         string[] MonNum = new string[12];
  27.         //存放数据
  28.         string[] MonCount = new string[12];
  29.         //为数组赋值
  30.         for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  31.         {
  32.             MonNum[i] = ds.Tables[0].Rows[i][0].ToString();
  33.             MonCount[i] = ds.Tables[0].Rows[i][1].ToString();
  34.         }
  35.         //为x轴指定特定字符串,以便显示数据
  36.         string strXdata = String.Empty;
  37.         foreach (string strData in MonNum)
  38.         {
  39.             strXdata += strData + "\t";
  40.         }
  41.         string strYdata = String.Empty;
  42.         //为y轴指定特定的字符串,以便与x轴相对应
  43.         foreach (string strValue in MonCount)
  44.         {
  45.             strYdata += strValue + "\t";
  46.         }

  47.         //创建ChartSpace对象来放置图表
  48.         ChartSpace laySpace = new ChartSpaceClass();

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

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



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

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

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

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

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

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

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

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

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


  85. 前台代码:
  86. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="OWCdrawing.aspx.cs" Inherits="OWCdrawing" %>

  87. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



  88.     清清月儿[url]http://blog.csdn.net/21aspnet[/url]


  89.    
  90.    
  91.         
  92.             
  93.                
  94.                     怎么样在ASP.NET2.0中使用OWC组件画图
  95.             
  96.             
  97.                
  98.         
  99.                
  100.             
  101.             
  102.             
  103.         
  104.    
  105.    
  106.    




  107. 数据库SQL脚本:
  108. USE [web]
  109. GO
  110. /****** 对象:  Table [dbo].[Chart]    脚本日期: 03/27/2007 22:26:00 ******/
  111. SET ANSI_NULLS ON
  112. GO
  113. SET QUOTED_IDENTIFIER ON
  114. GO
  115. CREATE TABLE [dbo].[Chart](
  116. [id] [int] IDENTITY(1,1) NOT NULL,
  117. [month] [smallint] NULL,
  118. [Allcount] [int] NULL
  119. ) ON [PRIMARY]
复制代码
在数据库建好表以后要自己手动假想有12条数据,手动添加,最终结果类似下图:



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

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



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

折线图:



面积图:



条形图:


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

可以参考OWC手册,具体位置:
C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052\OWCVBA11.CHM
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表