1,首先需要添加引用ChartExtents.dll和donetCHARTING.dll,资源百度大把。

2,配置图片生成类。

 using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Web;
using dotnetCHARTING; namespace ting.Models.BLL
{
public class Charting
{
private string _phaysicalimagepath;//图片存放路径
private string _title; //图片标题
private string _xtitle;//图片x座标名称
private string _ytitle;//图片y座标名称
private string _seriesname;//图例名称
private int _picwidth;//图片宽度
private int _pichight;//图片高度
private SeriesType _type;//统计图类型(柱形,线形等)
private bool _use3d;//是否显示成3维图片
private SeriesCollection _dt;//统计图数据源
private string _filename;//统计图片的名称(不包括后缀名) /**/
/// <summary>
/// 图片存放路径
/// </summary>
public string PhaysicalImagePath
{
set { _phaysicalimagepath = value; }
get { return _phaysicalimagepath; }
}
/**/
/// <summary>
/// 图片标题
/// </summary>
public string Title
{
set { _title = value; }
get { return _title; }
}
/**/
/// <summary>
/// 图片x座标名称
/// </summary>
public string XTitle
{
set { _xtitle = value; }
get { return _xtitle; }
}
/**/
/// <summary>
/// 图片y座标名称
/// </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 SeriesType Type
{
set { _type = value; }
get { return _type; }
} /// <summary>
/// 是否将输出的图片显示成三维
/// </summary>
public bool Use3D
{
set { _use3d = value; }
get { return _use3d; }
} /// <summary>
/// 对比图形数据源
/// </summary>
public SeriesCollection DataSource
{ set { _dt = value; }
get { return _dt; }
} /// <summary>
/// 生成统计图片的名称
/// </summary>
public string FileName
{
set { _filename = value; }
get { return _filename; }
} /// <summary>
/// 生成统计图片
/// </summary>
/// <param name="chart"></param>
/// <param name="type">图形类别,如柱状,折线型</param>
public void CreateStatisticPic(dotnetCHARTING.Chart chart)
{
chart.Title = this.Title;
chart.XAxis.Label.Text = this.XTitle;
chart.YAxis.Label.Text = this.YTitle;
chart.TempDirectory = this.PhaysicalImagePath;
chart.FileManager.FileName = this.FileName;
chart.Width = this.PicWidth;
chart.Height = this.PicHight;
chart.Type = ChartType.Combo;
chart.DefaultSeries.Type = this.Type; //统一使用默认的序列图类型属性
chart.Series.Name = this.SeriesName;
chart.SeriesCollection.Add(this.DataSource);
chart.DefaultSeries.DefaultElement.ShowValue = true;
chart.ShadingEffect = true;
chart.Use3D = this.Use3D;
chart.Series.DefaultElement.ShowValue = true;
}
}
}

3,新建一个ASP.NET页面,前台代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Statistics.aspx.cs" Inherits="ting.Views.Statistics" %>
<%@ 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>
</div>
<p>
请选择报表类型:<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
</p> </form>
</body>
</html>
<script type="text/javascript">
var obj = document.getElementsByTagName("map")[];
obj.parentNode.removeChild(obj); //屏蔽隐藏的链接
</script>

后台代码如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using dotnetCHARTING;
using ting.Models.BLL; namespace ting.Views
{
public partial class Statistics : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Drawing("Bar"); DropDownList1.Items.Add(new ListItem("AreaLine", "AreaLine"));
DropDownList1.Items.Add(new ListItem("Bar", "Bar"));
DropDownList1.Items.Add(new ListItem("Column", "Column"));
DropDownList1.Items.Add(new ListItem("Cylinder", "Cylinder"));
DropDownList1.Items.Add(new ListItem("Line", "Line"));
DropDownList1.Items.Add(new ListItem("Marker", "Marker"));
DropDownList1.Items.Add(new ListItem("Spline", "Spline"));
}
}
private void Drawing(string type)
{
Charting c = new Charting(); c.Title = "2015年月销售统计图";
c.XTitle = "2015年各月份";
c.YTitle = "销售额(千元)/销售量(束)";
c.PicHight = ;
c.PicWidth = ;
c.SeriesName = "合计";//仅对于DataTable类型做数据源时,此属性有效
c.PhaysicalImagePath = "/images/ChartImages";//统计图片存放的文件夹名称,缺少对应的文件夹生成不了统计图片
c.FileName = "Statistics51aspx";
if (type == "AreaLine")
c.Type = SeriesType.AreaLine;
else if (type == "Bar")
c.Type = SeriesType.Bar;
else if (type == "Column")
c.Type = SeriesType.Column;
else if (type == "Cylinder")
c.Type = SeriesType.Cylinder;
else if (type == "Line")
c.Type = SeriesType.Line;
else if (type == "Marker")
c.Type = SeriesType.Marker;
else
c.Type = SeriesType.Spline; c.Use3D = true; //3D模式
c.DataSource = GetDataSource();
c.CreateStatisticPic(this.Chart1); }
/// <summary>
/// 生成统计图片的数据源模型(单一或对比图都可以)
/// </summary>
/// <returns></returns>
private SeriesCollection GetDataSource()
{
ting.Models.BLL.AdminOPT adopt = new ting.Models.BLL.AdminOPT();
SeriesCollection SC = new SeriesCollection();
Random rd = new Random(); // 生成对比图
for (int a = ; a <= ; a++) //对比的项数,如年各月的月销售额和月利润载客量数据对比就相当于有两个数据项
{
Series s = new Series();
s.Name = (a == ? "月销售额合计(千元)" : "销售量合计(束)");//各个数据项代表的名称,如月销售额和月利润12个月载客量走势图,则一条表示月销售额,一条表示月利润
if (a == )
{
for (int b = ; b <= ; b++) //X轴尺度个数,如12个月表示有12个尺度数
{
Element e = new Element();
e.Name = b.ToString();//对应于X轴个尺度的名称
e.YValue = Convert.ToDouble(adopt.Get_MonthCountMoney(b)/999.00);//与X轴对应的Y轴的数值
s.Elements.Add(e);
}
}
if(a==)
{
for (int b = ; b <= ; b++) //X轴尺度个数,如12个月表示有12个尺度数
{
Element e = new Element();
e.Name = b.ToString();//对应于X轴个尺度的名称
e.YValue = Convert.ToDouble(adopt.Get_MonthCountNum(b));//与X轴对应的Y轴的数值
s.Elements.Add(e);
}
}
SC.Add(s);
}
//可自定义填充图的填充色,系统采取默认分配各数据项的填充色
//SC[0].DefaultElement.Color = Color.Blue;
//SC[1].DefaultElement.Color = Color.Red;
//SC[2].DefaultElement.Color = Color.FromArgb(255, 99, 49);
//SC[3].DefaultElement.Color = Color.FromArgb(0, 156, 255);
return SC;
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Drawing(DropDownList1.SelectedValue);
}
}
}

解释:我用的是MVC,所以ASP界面我用iframe调出。关键代码都有注释。

分别把销售量和销售额给算出来。首先定义报表类SeriesCollection。

Series 为一个报表汇总。Element顾名思义是报表里的元数据。X轴为月份。Y轴为自定义数据。

<div style="float: left; width: 100%; margin: 0 auto; border: solid 1px #DDDDDD;">
<iframe id="no1" width="700" height="440" scrolling="no" src="../../Statistics.aspx"></iframe>
</div>

效果图如下:

ASP.NET基于donetCHARTING的自动报表的更多相关文章

  1. Unity3.0基于约定的自动注册机制

    前文<Unity2.0容器自动注册机制>中,介绍了如何在 Unity 2.0 版本中使用 Auto Registration 自动注册机制.在 Unity 3.0 版本中(2013年),新 ...

  2. struts基于ognl的自动类型转换需要注意的地方

    好吧,坎坷的过程我就不说了,直接上结论: 在struts2中使用基于ognl的自动类型转换时,Action中的对象属性必须同时添加get/set方法. 例如: 客户端表单: <s:form ac ...

  3. python之excel自动报表

    一.自动报表前期工作: 需要安装XlsxWriter模块,可以从github上下载以后解压.setup.py install. 二.程序: #!/usr/bin/env python # -*- co ...

  4. 模拟登录神器之PHP基于cURL实现自动模拟登录类

    一.构思 从Firefox浏览器拷贝cURL命令(初始页.提交.提交后) 自动分析curl形成模拟登录代码 默认参数:ssl/302/gzip 二.实现 接口 (一)根据curl信息执行并解析结果 p ...

  5. 推荐一款超强大的基于Angularjs的自动完成(Autocomplete)标签及标签组插件–ngTagsInput

    前言 今天利用中午午休时间,给大家分享推荐一款基于Angularjs的自动完成(Autocomplete)标签及标签组插件--ngTagsInput,功能超强大的.不信,你试试就知道^_^... Au ...

  6. ASP.NET MVC 3 loginUrl自动变成Account/Login,并且发生404错误的解决方法

    http://www.cnblogs.com/think8848/archive/2011/07/08/2100814.html ASP.NET MVC 3 loginUrl自动变成Account/L ...

  7. 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档.

  8. 从ASP.NET传递参数给水晶报表

    原文 http://www.cnblogs.com/insus/p/3281114.html 上次Insus.NET有简单写了一篇文章<Visual Studio 2012使用水晶报表Cryst ...

  9. 在ASP.NET MVC 中使用ActiveReports报表控件

    随着MVC模式的广泛运用,对Web应用系统的开发带来了巨大的影响,我们好像又回到了原来的ASP时代,视乎这是一种后退而不是一种进步,不过MVC模式给我们带来的影响不仅限于我们所看到的这一点..MVC看 ...

随机推荐

  1. <modules runAllManagedModulesForAllRequests="true" />(转1)

    最近在使用 MVC 开发的时候,遇到一个对我来说“奇怪的问题”,就是使用 BundleTable 进行 CSS.JS 文件绑定,然后使用 Styles.Render.Scripts.Render 进行 ...

  2. java实例变量及方法调用顺序

    public class Base { private String name="base"; public Base(){ sayHello(); } void sayHello ...

  3. CString常用操作

    ①.CString 类对象的初始化: CString str; CString str1(_T("abc")); CString str2 = _T("defg" ...

  4. C# 创建execl文件 并且填充数据

    第一步:引用文件 using NPOI.HSSF.UserModel;using System.Data;using CTUClassLibrary;using System.IO;using NPO ...

  5. 安卓初步:通讯技术介绍&&安卓介绍

    通讯技术: 1G    模拟制式    只能进行语音通话. 2G    GSM, CDMA    收发短信和邮件. 2.5G    GPRS, EDGE    访问wap网络数据.(图片, 壁纸, 文 ...

  6. shell date格式化输出

    1-  echo `date "+%Y-%m-%d %H:%M:%S"` 2014-11-13 15:06:26 2-  echo `date "+%y-%m-%d %H ...

  7. Android Service 通过 BroadcastReceiver 更新Activity UI

    1:MainActivity.java public class MainActivity extends Activity { private TextView tvInfo = null; pri ...

  8. 微软的OneDrive研究~

    Dropbox 很好,唯一觉得不爽的是只能同步指定的目录.不过被墙之后就不那么方便了,所以改用微软的 Live Mesh,缺点是支持的设备少(仅 PC 和 Mac). https://technet. ...

  9. C# 语法技巧_三目运算_switch_case

    一.三目运算符 三目运算符的一种简便写法: bool b = str == "abc" ? false : true; 当是自身时,实际上别吝啬那一个括号,有一个括号,实际上更容易 ...

  10. Regex类

    一.属性 CacheSize 获取或设置已编译的正则表达式的当前静态缓存中的最大项数. 默认是15个,最近使用的15个会存在缓存中,避免重新创建.当有第16个进来会替换掉第  1个.保持15个.Opt ...