C#利用ZedDemo组件生成数据报表

来源:互联网 发布:蓝海软件 编辑:程序博客网 时间:2024/05/23 18:34

ZedGraph

ZedGraph官方对ZedGraph的解释是:ZedGraph是一个针对用c#编官吏的类库,在WinForm下和ASP.NET都有对应的控件,它可以绘制出OWC中所能支持的图表类型,如2D或者3D的饼图、柱状图等。尽管它提供了许多详尽的属性以供实现灵活的控件,但是使用默认的设置就能很简单地绘制出多种类型的图表。官网:http://www.zedgraph.org

ZedGraph控件常用属性

  • OutputFormat:设置图表的导出格式,如jpg或者png,默认是导出成png格式图片
  • RenderedImagePath:设置图表的导出后的保存路径,默认是~/ZedGraphImages/
  • RenderMode:设置图表的如何在网面中显示,它有两个值:ImageTag值表示在网页中以<img>标签来显示,RawImage值表示在网面中直直接显示,默认值是ImageTag
  • Height:设置高度
  • Width:设置宽度


具体实例:

需下载并添加ZedGraph.dll和ZedGraph.Web.dll

ZedDemo.aspx  //显示效果页面

<table>        <tr>            <td>                柱状图:<br />                <img src="ZedGraph_Other.aspx?type=Bar" />            </td>            <td>                折线图:<br />                <img src="ZedGraph_Other.aspx?type=Curve" />            </td>        </tr>        <tr>            <td>                线形图:<br />                <img src="ZedGraph_Other.aspx?type=Stick" />            </td>            <td>                饼图:<br />                <img src="ZedGraph_Pie.aspx" />            </td>        </tr>    </table>


ZedGraph_Other.aspx页面  //生成除饼图以外的其它类型

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ZedGraph_Other.aspx.cs" Inherits="ZedGraph_Other" %><%@ Register Assembly="ZedGraph.Web" Namespace="ZedGraph.Web" TagPrefix="cc1" %><cc1:ZedGraphWeb ID="ZedGraphWeb1" runat="server" Width="500" Height="375" RenderMode="RawImage"></cc1:ZedGraphWeb>

ZedGraph_Other.aspx.cs页面  //生成除饼图以外的其它类型

using System;using System.Data;using System.Configuration;using System.Collections;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 ZedGraph;using ZedGraph.Web;using System.Drawing;public partial class ZedGraph_Other : System.Web.UI.Page{    protected override void OnInit(EventArgs e)    {        InitializeComponent();        base.OnInit(e);    }    private void InitializeComponent()    {        ZedGraphWeb1.RenderGraph += new ZedGraphWebControlEventHandler(zedgraph_Pie_RenderGraph);    }    /// <summary>    /// 绘制报表    /// </summary>    /// <param name="webObject"></param>    /// <param name="g"></param>    /// <param name="pane"></param>    void zedgraph_Pie_RenderGraph(ZedGraphWeb webObject, Graphics g, MasterPane pane)    {        GraphPane myPane = pane[0];        myPane.Chart.Fill = new Fill(Color.LightYellow);        //设置报表标题        myPane.Title.Text = "网站访问统计";        //设置报表X轴标题        myPane.XAxis.Title = new AxisLabel("月份", "宋体", 24, Color.Green, true, false, false);        //设置报表Y轴标题        myPane.YAxis.Title = new AxisLabel("IP", "宋体", 24, Color.Green, true, false, false);        //定义在X轴要显示的分类        string[] labels = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" };        //设置X轴的显示分类内容        myPane.XAxis.Scale.TextLabels = labels;        //设置X轴分类显示方式为text        myPane.XAxis.Type = AxisType.Text;        //分别为两个用户创建值        PointPairList pointList1 = new PointPairList();        PointPairList pointList2 = new PointPairList();        Random random = new Random();        for (int i = 1; i < 13; i++)        {            int x = i;            int y1 = random.Next(3000) + 500;            int y2 = random.Next(5000) + 1000;            pointList1.Add(x, y1);            pointList2.Add(x, y2);        }        //显示方式-------------------------------------------------------------------------------------        //在此myPane后面的方法决定了显示什么报表类型,如下格式:        //myPane.AddCurve("匿名用户", pointList1, Color.Red);        //myPane.AddCurve("会员用户", pointList2, Color.Blue);        //根据不同的参数显示不同的类型        if (Request.QueryString["type"] != null)        {            string type = Request.QueryString["type"].ToString();            switch (type)            {                case "Bar":                    //显示圆状图                    myPane.AddBar("匿名用户", pointList1, Color.Red);                    myPane.AddBar("会员用户", pointList2, Color.Blue);                    break;                case "Curve":                    //显示折线图                    myPane.AddCurve("匿名用户", pointList1, Color.Red);                    myPane.AddCurve("会员用户", pointList2, Color.Blue);                    break;                case "Stick":                    //显示线状图                    myPane.AddStick("匿名用户", pointList1, Color.Red);                    myPane.AddStick("会员用户", pointList2, Color.Blue);                    break;                default:                    //显示圆状图                    myPane.AddBar("匿名用户", pointList1, Color.Red);                    myPane.AddBar("会员用户", pointList2, Color.Blue);                    break;            }        }        else        {            //添加两个用户            myPane.AddCurve("匿名用户", pointList1, Color.Red);            myPane.AddCurve("会员用户", pointList2, Color.Blue);        }        //----------------------------------------------------------------------------------------------        //设置报表外部的渐变颜色        myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f);        //设置报表内部的渐变颜色        myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45.0f);        //刷新        pane.AxisChange(g);    }    protected void Page_Load(object sender, EventArgs e)    {    }}

ZedGraph_Pie.aspx  //生成饼图代码页

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ZedGraph_Pie.aspx.cs" Inherits="ZedGraph_Pie" %><%@ Register Assembly="ZedGraph.Web" Namespace="ZedGraph.Web" TagPrefix="cc1" %><cc1:ZedGraphWeb ID="ZedGraphWeb1" runat="server" Width="500" Height="375" RenderMode="RawImage"></cc1:ZedGraphWeb>

ZedGraph_Pie.aspx.cs  //生成饼图代码页

using System;using System.Data;using System.Configuration;using System.Collections;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 ZedGraph;using ZedGraph.Web;using System.Drawing;public partial class ZedGraph_Pie : System.Web.UI.Page{    protected override void OnInit(EventArgs e)    {        InitializeComponent();        base.OnInit(e);    }    private void InitializeComponent()    {        ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(ZedGraphWeb1_RenderGraph);    }    void ZedGraphWeb1_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, System.Drawing.Graphics g, ZedGraph.MasterPane pane)    {        GraphPane myPane = pane[0];        myPane.Chart.Fill = new Fill(Color.LightYellow);        myPane.Title.Text = "文化程度比率";        string[] labels = new string[6];        double[] values = new double[6];        labels[0] = "小学";        labels[1] = "初中";        labels[2] = "高中";        labels[3] = "专科";        labels[4] = "本科";        labels[5] = "研究生";        values[0] = 5000;        values[1] = 6000;        values[2] = 7000;        values[3] = 8000;        values[4] = 9000;        values[5] = 10000;        myPane.AddPieSlices(values, labels);        pane.AxisChange();    }    protected void Page_Load(object sender, EventArgs e)    {    }}

------------------------------------------------------------------------------------------------------------------------------

如果希望报表在网页中以<img>标签方式显示可以在前台页面做如下设置:RenderMode="ImageTag"

具体实例代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ZedGraphDemo.aspx.cs" Inherits="ZedGraphDemo" %><%@ Register Assembly="ZedGraph.Web" Namespace="ZedGraph.Web" TagPrefix="cc1" %><!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></title></head><body>    <form id="form1" runat="server">    <div>    <cc1:ZedGraphWeb id="ZedGraphWeb1" runat="server" Height="300" Width="300" BarType="PercentStack" RenderMode="ImageTag" OutputFormat="Png" RenderedImagePath="images">        </cc1:ZedGraphWeb>    </div>    </form></body></html>

在ZedDemo.aspx页面显示效果如下:



本实例相关源码下载地址为:

http://download.csdn.net/detail/houxh86/3680711






原创粉丝点击