清清月儿 .NET万花筒 Asp.net技术 Asp.net教程 Asp.net源码 Asp.net基础 Asp.net控件 Asp.net入门

天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。

用户操作
[即时聊天] [发私信] [加为好友]
清清月儿ID:21aspnet
2016918次访问,排名6,好友0人,关注者417人。
21aspnet的文章
原创 963 篇
翻译 9 篇
转载 28 篇
评论 1250 篇
清清月儿的公告
最近评论
dingyunjiang:好贴!
deltallp:朋友,已经下载不了了!~
spkl1:aa.split(char[]{"'"})

aa.split(b)
有什么区别
---------------------------------------------------------
炫客工作室
那个.....不做评价...
---------------------------------------------------------
炫客工作室
www.spkl.ne……
spkl1:mm发张照片上来,呵呵``
---------------------------------------------------------
炫客工作室
www.spkl.net……
文章分类
收藏
    相册
    图片库
    图片库2
    .NET 工具
    C# to VB.NET Translator
    Fiddler
    FxCop代码标准检测工具
    httpwatch
    Memcached
    Multiple IE
    Nbear
    Nunit单元测试
    Tab集合
    VB.NET and C# Comparison
    VB.NET 代码转为C#
    网站国际排名查询工具
    .NET 下载/讲座视频
    chinaitlab
    enfull
    Visual Studio 2005 的工具
    wrox出版社书刊代码下载
    中国台湾微软MSDN
    中文MSDN WebCast网络广播全部下载列表
    源码之家
    .NET 优秀Blog
    cathsfz
    cnkiminzhuhu
    cuike519的专栏
    dahuzizyd的专栏
    DotNet技术交流乐园
    DotNet男孩社区
    dudu
    gztoby
    IT Crazy
    Kemin's booootLog
    kimyoo(RSS)
    Leoo2sk
    LoveCherry
    MSDN每日追踪
    Nios.Org
    Teddy's Knowledge Base
    Think Different and Think More
    Visual Studio.net专栏
    WCF Tools 中国研发团队的专栏
    体验ASP.NET 2.0新特性
    刘洪峰
    天轰穿
    孟宪会
    宝玉
    开心就好【博客堂】
    张子阳
    思归呓语
    木子 [I am praying]
    李会军
    李洪根【VB】
    永春阁
    汉飞扬【Vista】
    涂曙光【SharePoint】
    理想&美人(RSS)
    维生素C.net
    网际浪子
    葛涵涛
    蒋涛
    蝈蝈俊.net[csdn版]
    蝈蝈俊.net[joycode版]
    谭振林
    邹建
    阿不
    阿良.NET
    雨痕
    風語·深蓝
    鸟食轩(RSS)
    黄昕
    .NET 优秀网站
    .NET 官方网www.asp.net
    .NET 藏经阁 - 知识分享
    .NET开发资源精华收【不得不看】
    ASP .NET FAQ
    asp101
    aspfree
    C#开源资源
    C#开源资源大全
    C#语言在线帮助网站
    codeproject
    infragistics
    iwebsms
    MSDN Web/服务
    MSDN中文
    Scott Guthrie(ASP.NET之父)
    SharePoint爱好者
    VS2005.com
    Wintellect
    www.411asp.net
    世界上最大的Open Source项目在线网站
    中国C#技术学习中心
    官方ASP.NET入门教程
    微软中文新闻组
    微软官方.NET指导站点
    最好的索引网站
    正则
    邮件发送常见问题解决方法
    Ajax链接
    AJAX载入等待图片在线生成
    bindows(RSS)
    DHTML menu4作者主页(RSS)
    Dhtmlgoodies
    Dynamicdrive
    EXT类库
    json
    Tabs
    Tabs
    Tabs
    Yahoo YUI
    大量DHTML代码
    无忧脚本 - JavaScript
    索漫
    综合开发技术网
    CSDN
    IBM中文Web 项目资源中心
    W3C技术在中国
    中国BS网
    中文C#技术站
    天新网
    天极网开发频道
    太平洋电脑网web开发
    看雪
    统一教学网
    编程爱好者
    网页设计师:web标准教程及推广,网站重构
    老猫理想
    蓝色理想
    豆豆技术网
    赛迪网
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 ASP.NET2.0轻松搞定统计图表【月儿原创】 收藏

    新一篇: ASP.NET2.0雷霆之怒盗链者的祝福【月儿原创】 | 旧一篇: C#精髓【月儿原创】第四讲 GridView 72般绝技

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

    作者:清清月儿

    主页:http://blog.csdn.net/21aspnet/           时间:2007.3.27

    本文讲述如何绘制条形图折线图柱形图面积图等常见图形。

    效果图

    手把手教程:

    原理: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=sa;Pwd=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);

            //存放月
            string[] MonNum = new string[12];
            //存放数据
            string[] MonCount = new string[12];
            //为数组赋值
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                MonNum[i] = ds.Tables[0].Rows[i][0].ToString();
                MonCount[i] = ds.Tables[0].Rows[i][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(".")) + "\\ShowData.gif";
            laySpace.ExportPicture(strAbsolutePath, "GIF", 400, 250);

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

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

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

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

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>清清月儿http://blog.csdn.net/21aspnet</title>
    </head>
    <body>
        <form id="form1" runat="server">
       <div style="text-align: left">
            <table style="width: 600px">
                <tr>
                    <td colspan="3" style="height: 20px">
                        <strong>怎么样在ASP.NET2.0中使用OWC组件画图</strong></td>
                </tr>
                <tr>
                    <td colspan="3" rowspan="2" style="height: 21px">
            <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
                    </td>
                </tr>
                <tr>
                </tr>
            </table>
       
        </div>
        </form>
    </body>
    </html>

    数据库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

    发表于 @ 2007年03月27日 22:16:00|评论(loading...)|编辑

    新一篇: ASP.NET2.0雷霆之怒盗链者的祝福【月儿原创】 | 旧一篇: C#精髓【月儿原创】第四讲 GridView 72般绝技

    评论

    #showrock 发表于2007-03-28 11:25:39  IP: 59.108.6.*
    强!
    #cisky 发表于2007-03-28 11:28:26  IP: 218.17.214.*
    不错,收藏!
    #gkq8124372 发表于2007-03-28 11:49:47  IP: 125.92.218.*
    Good
    #chentianfen 发表于2007-03-28 12:44:18  IP: 203.95.106.*
    安全性会出现问题
    #weblogic2009 发表于2007-03-28 13:35:13  IP: 58.31.73.*
    不好集成!! ( 水晶报表杀手 -- e表, 它避免了大量的复杂SQL编写以及编程来准备数据。轻松实现复杂的统计报表,详见: http://my5155.meibu.com )
    #DVD_01 发表于2007-03-28 13:44:37  IP: 121.201.27.*
    good
    学习了
    #菜鸟 发表于2007-03-28 14:35:13  IP: 220.234.107.*
    不好集成!! ( 水晶报表杀手 -- e表, 它避免了大量的复杂SQL编写以及编程来准备数据。轻松实现复杂的统计报表,详见: http://my5155.meibu.com )
    ===============
    大量的复杂SQL编写以及编程来准备数据 我用Reporting Services谁用你的什么易表,这个OWC方案是免费的知不知道!!!!!!!!!!!!!!!

    Reporting Services是SQLserver2005集成的 功能比e表强1000000000000000000000000倍
    #wangwan 发表于2007-03-28 16:41:43  IP: 219.140.154.*
    VS2005可以直接用其提供的REPORTVIEW控件,谁用你的破水晶,烂易表啊
    #ok999ok 发表于2007-03-28 20:57:51  IP: 220.187.35.*
    你的CLIENT都是OFFICE吗?幼稚!!!
    #dzj 发表于2007-03-29 09:35:51  IP: 211.157.25.*
    徒言
    #querywhy 发表于2007-03-29 11:24:20  IP: 218.14.54.*
    good!
    ##XFlame 发表于2007-03-29 13:46:08  IP: 124.117.70.*
    用开源的ZedGraph吧,OWC配置很麻烦的,不好控制
    #kkk 发表于2007-03-29 21:29:48  IP: 58.38.96.*
    好啊
    #marchonchina 发表于2007-03-30 08:55:52  IP: 220.170.23.*
    很有价值
    #shuihan20e 发表于2007-03-30 09:34:38  IP: 59.80.91.*
    我怎么没有那个组件啊
    #假正经哥哥 发表于2007-03-30 10:39:50  IP: 222.66.70.*
    owc可以做到的效果,^_^
    http://www.cnblogs.com/xuanye/archive/2007/03/11/671182.html
    #菜鸟 发表于2007-03-30 11:48:30  IP: 220.234.107.*
    # shuihan20e 发表于2007-03-30 09:34:38 IP: 59.80.91.*
    我怎么没有那个组件啊
    =================
    你要装office2003
    #wanghaoitfk 发表于2007-04-02 09:12:27  IP: 192.168.40.*
    用Crystal Report同样能搞定~~~~~还轻松
    #dingziyu 发表于2007-04-02 15:41:14  IP: 220.163.86.*
    还是开源的才好!
    #purple_tide 发表于2007-04-20 14:20:59  IP: 218.66.59.*
    Reporting Services 是很不错的 设计舒服 使用也方便

    水晶报表的觉得用起来没有那么舒服了 不过水晶报表的功能很强

    OWC基本上我只会在很简单的页面中 不过基本上是不动的
    #lgz_1205 发表于2007-05-17 17:09:45  IP: 221.219.24.*
    谢谢月儿!
    #bearhunter 发表于2007-05-19 19:00:30  IP: 125.115.13.*
    太好了
    #kissyougoodby 发表于2007-08-10 14:45:26  IP: 202.102.140.*
    不错,知道OWC是什么东东了。
    #jzhua64538931 发表于2007-09-27 16:16:32  IP: 218.94.36.*
    为什么生成的图片,会分成2截呀!可以设置成生成一截吗?怎么设置
    #blueroc2003 发表于2007-11-26 14:58:05  IP: 222.69.60.*
    可否向您请教一个用OWC实现复杂报表的设计问题,比如说我有两个表,主表和辅表,通过主表中的内容来查询副表中的详细数据,动态的呈现一栏,请问如何能实现,目前我用DCOM组件来实现,不过应用于WEB会有公用性和进程管制的一些不足.
    #bugfoxlmc 发表于2008-03-19 16:27:57  IP: 58.62.210.*
    为什么生成的图片,会分成2截呀!可以设置成生成一截吗?怎么设置?
    #LqArPjj 发表于2008-06-27 20:27:38  IP: 58.213.25.*
    学习!!
    引用“为什么生成的图片,会分成2截呀!可以设置成生成一截吗?怎么设置?”
    求解!!!!!
    #LqArPjj 发表于2008-06-27 21:02:56  IP: 58.213.25.*
    您好!!还想请教!!怎么把这里图形进行打印!!!做个打印按钮!!!
    #AtomBomb1989 发表于2008-07-04 18:46:50  IP: 61.149.89.*
    长见识了……
    #jcc3120 发表于2008-07-07 15:44:44  IP: 121.227.143.*
    自己也可以写个封装类,我就自己写的,
    #q_a_z_123456789 发表于2008-07-22 17:01:10  IP: 220.201.4.*
    这句话是控制分割线的位置,如果不相显示可以把它注释掉,
    InsertChart.Axes[1].Scaling.SplitMinimum = 200;
    #q_a_z_123456789 发表于2008-07-22 17:04:03  IP: 220.201.4.*
    而不是你说的分成2截,他只是一个分割线,很好用
    #ADVANTECH_CYZ 发表于2008-08-31 16:32:59  IP: 222.92.84.*

    “添加引用”OWC可以引用到。
    但是在代码中我引用
    using Microsoft.Office.Interop.Owc11
    运行时会出现错误:
    The type or namespace name 'Office' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)


    何解?


    #JeasonZhao 发表于2008-09-18 14:11:18  IP: 10.140.1.*
    集成到IIS的时候除非你有完全的管理权限,否则几乎是不可能,我的站点是托管站点,对此没有任何招数可施展
    #hju_sea 发表于2008-09-23 13:16:40  IP: 218.17.0.*
    多写
    #fromfromto 发表于2008-10-31 13:32:44  IP: 218.79.57.*
    我用asp.net3.5开发了一个网站,不知道是不是算所谓企业级别的,统计图表到是用到了。不知能不能申请创新基金,创业基金

    看来还要多学习啊
    #fromfromto 发表于2008-10-31 13:32:52  IP: 218.79.57.*
    我用asp.net3.5开发了一个网站,不知道是不是算所谓企业级别的,统计图表到是用到了。不知能不能申请创新基金,创业基金

    看来还要多学习啊
    #fromfromto 发表于2008-10-31 13:34:16  IP: 218.79.57.*
    我用asp.net3.5开发了一个网站,不知道是不是算所谓企业级别的,统计图表到是用到了。不知能不能申请创新基金,创业基金

    看来还要多学习啊
    #fromfromto 发表于2008-10-31 13:34:51  IP: 218.79.57.*
    不好意思 多发了 帮我删了吧 !!!!!
    #fromfromto 发表于2008-10-31 13:34:55  IP: 218.79.57.*
    不好意思 多发了 帮我删了吧 !!!!!
    #fromfromto 发表于2008-10-31 13:35:48  IP: 218.79.57.*
    多发了 帮我删了吧
    #fromfromto 发表于2008-10-31 13:35:51  IP: 218.79.57.*
    多发了 帮我删了吧
    #Mohammed 发表于2008-10-31 14:29:18  IP: 221.226.124.*
    OWC是COM组件,和.Net之间互操作有点性能损失,一般的报表用Reporting Service比较好,再复杂的就用GDI+直接画吧。
    #ghostbear 发表于2008-11-10 18:55:28  IP: 220.175.192.*
    谢谢月儿!
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 清清月儿