使用DotNetCharting控件生成报表统计图总结
步骤:
(1)首先下载dotnetcharting破解版本
(2)把\bin\dotnetCHARTING.dll添加到工具箱,并且添加引用;
(3)把控件拖到你的网页上,然后添加引用using dotnetCHARTING;
(4)创建dotnetCHARTING操作类,以便在程序中调用
/// <summary> /// 根据数据动态生成图形(柱形图、饼图、曲线图) /// </summary> public class ShowData { #region 属性 private string _phaysicalimagepath;//图片存放路径 private string _title; //图片标题 private string _xtitle;//图片x座标名称 private string _ytitle;//图片y座标名称 private string _seriesname;//图例名称 private int _picwidth;//图片宽度 private int _pichight;//图片高度 private DataTable _dt;//图片数据源 /// <summary> /// 图片存放路径 /// </summary> public string PhaysicalImagePath { set { _phaysicalimagepath = value; } get { return _phaysicalimagepath; } } /// <summary> /// 图片标题 /// </summary> public string Title { set { _title = value; } get { return _title; } } /// <summary> /// 图片标题 /// </summary> public string XTitle { set { _xtitle = value; } get { return _xtitle; } } /// <summary> /// 图片标题 /// </summary> public string YTitle { set { _ytitle = value; } get { return _ytitle; } } /// <summary> /// 图例名称 /// </summary> public string SeriesName { set { _seriesname = value; } get { return _seriesname; } } /// <summary> /// 图片宽度 /// </summary> public int PicWidth { set { _picwidth = value; } get { return _picwidth; } } /// <summary> /// 图片高度 /// </summary> public int PicHight { set { _pichight = value; } get { return _pichight; } } /// <summary> /// 图片数据源 /// </summary> public DataTable DataSource { set { _dt = value; } get { return _dt; } } #endregion #region 构造函数 public ShowData() { // // TODO: 在此处添加构造函数逻辑 // } public ShowData(string PhaysicalImagePath, string Title, string XTitle, string YTitle, string SeriesName) { _phaysicalimagepath = PhaysicalImagePath; _title = Title; _xtitle = XTitle; _ytitle = YTitle; _seriesname = SeriesName; } #endregion #region 输出柱形图 /**/ /// <summary> /// 柱形图 /// </summary> /// <returns></returns> public void CreateColumn(dotnetCHARTING.Chart chart) { chart.Title = this._title; chart.XAxis.Label.Text = this._xtitle; chart.YAxis.Label.Text = this._ytitle; chart.TempDirectory = this._phaysicalimagepath; chart.Width = this._picwidth; chart.Height = this._pichight; chart.Type = ChartType.Combo; chart.Series.Type = SeriesType.Cylinder; chart.Series.Name = this._seriesname; chart.Series.Data = this._dt; chart.SeriesCollection.Add(); chart.DefaultSeries.DefaultElement.ShowValue = true; chart.ShadingEffect = true; chart.Use3D = false; chart.Series.DefaultElement.ShowValue = true; } #endregion #region 输出饼图 /**/ /// <summary> /// 饼图 /// </summary> /// <returns></returns> public void CreatePie(dotnetCHARTING.Chart chart) { chart.Title = this._title; chart.TempDirectory = this._phaysicalimagepath; chart.Width = this._picwidth; chart.Height = this._pichight; chart.Type = ChartType.Pie; chart.Series.Type = SeriesType.Cylinder; chart.Series.Name = this._seriesname; chart.ShadingEffect = true; chart.Use3D = false; chart.DefaultSeries.DefaultElement.Transparency = 20; chart.DefaultSeries.DefaultElement.ShowValue = true; chart.PieLabelMode = PieLabelMode.Outside; chart.SeriesCollection.Add(getArrayData()); chart.Series.DefaultElement.ShowValue = true; } private SeriesCollection getArrayData() { SeriesCollection SC = new SeriesCollection(); DataTable dt = this._dt; for (int i = 0; i < dt.Rows.Count; i++) { Series s = new Series(); s.Name = dt.Rows[i][0].ToString(); Element e = new Element(); // 每元素的名称 e.Name = dt.Rows[i][0].ToString(); // 每元素的大小数值 e.YValue = Convert.ToInt32(dt.Rows[i][1].ToString()); s.Elements.Add(e); SC.Add(s); } return SC; } #endregion #region 输出曲线图 /// <summary> /// 曲线图 /// </summary> /// <returns></returns> public void CreateLine(dotnetCHARTING.Chart chart) { chart.Title = this._title; chart.XAxis.Label.Text = this._xtitle; chart.YAxis.Label.Text = this._ytitle; chart.TempDirectory = this._phaysicalimagepath; chart.Width = this._picwidth; chart.Height = this._pichight; chart.Type = ChartType.Combo; chart.Series.Type = SeriesType.Line; chart.Series.Name = this._seriesname; chart.Series.Data = this._dt; chart.SeriesCollection.Add(); chart.DefaultSeries.DefaultElement.ShowValue = true; chart.ShadingEffect = true; chart.Use3D = false; chart.Series.DefaultElement.ShowValue = true; } #endregion }
(4)实例调用
ASPX页面源码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestDemo._Default" %> <%@ Register Assembly="dotnetCHARTING" Namespace="dotnetCHARTING" TagPrefix="dotnetCHARTING" %> <!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> <dotnetCHARTING:Chart ID="Chart1" runat="server"> </dotnetCHARTING:Chart> <dotnetCHARTING:Chart ID="Chart2" runat="server"> </dotnetCHARTING:Chart> <dotnetCHARTING:Chart ID="Chart3" runat="server"> </dotnetCHARTING:Chart> </div> </form> </body> </html>
ASPX.CS源码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using dotnetCHARTING; namespace TestDemo { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { #region 调用说明及范例 //在要显示统计图的页面代码直接调用,方法类似如下: ShowData show = new ShowData(); show.Title = "2012年各月消费情况统计"; show.XTitle = "月份"; show.YTitle = "金额(万元)"; show.PicHight = 300; show.PicWidth = 600; show.SeriesName = "总金额"; show.PhaysicalImagePath = "images"; DataTable dt = new DataTable(); dt.Columns.Add("month", typeof(string)); dt.Columns.Add("money", typeof(string)); dt.Columns["month"].AutoIncrement = true; for (int i = 1; i < 13; i++) { DataRow dr = dt.NewRow(); dr["month"] = i.ToString(); dr["money"] = 100 * i; dt.Rows.Add(dr); } show.DataSource = dt; show.CreateColumn(this.Chart1);//显示柱形图 show.CreateLine(this.Chart2); //显示曲线图 show.CreatePie(this.Chart3); //显示饼图 #endregion } } }
运行结果: