第八章  图形化报表

1.Highcharts

2.水晶报表

3.jqchart

4.MSChart:

       例如:

           

//检索重庆市月平均气温
string sql = @"select DATEPART (month,dtmMeasure) as 'Month',AVG (fltTemperature ) as 'AvgTemp' from TblTemperature
        where chvCityName ='重庆' group by DATEPART (month,dtmMeasure) order by Month desc";
DataSet ds = SqlHelper.Select(CommandType.Text, sql, null);
//设置图表背景颜色
this.Chart1.BackColor = Color.LightPink;
//设置图表边框样式
this.Chart1.BorderlineColor = Color.Green;
//边框线宽度
this.Chart1.BorderlineWidth = 5;
//图表边框西安为细线
this.Chart1.BorderlineDashStyle = ChartDashStyle.Solid;
//标题
this.Chart1.Titles.Add("重庆市月平均气温走势图");
//设置图表X,Y轴绑定的列
this.Chart1.Series[0].XValueMember = "Month";
this.Chart1.Series[0].YValueMembers = "AvgTemp";
//设置每个数据点标签上显示的值为数据点的值
this.Chart1.Series[0].IsValueShownAsLabel = true;
//设置数据点标签的文本格式]
this.Chart1.Series[0].LabelFormat = "{0}℃";
//绑定数据源
this.Chart1.DataSource = ds;
this.Chart1.DataBind();


       //折线图

//检索重庆市月平均气温
string sql = @"select chvCityName, DATEPART (month,dtmMeasure) as 'Month',AVG (fltTemperature )
                as 'AvgTemp' from TblTemperature
                where chvCityName ='重庆' or chvCityName ='北京'
                group by chvCityName,DATEPART (month,dtmMeasure) order by Month desc";
DataSet ds = SqlHelper.Select(CommandType.Text, sql, null);
//为图表添加2个序列
this.Chart1.Series.Clear();
this.Chart1.Series.Add("重庆");
this.Chart1.Series.Add("北京");
//设置每一个序列的图表类型
this.Chart1.Series["重庆"].ChartType = SeriesChartType.Line;
this.Chart1.Series["北京"].ChartType = SeriesChartType.Line;
//设置图表背景颜色
this.Chart1.BackColor = Color.Pink;
//设置图表边框样式
this.Chart1.BorderlineColor = Color.Green;
//边框线宽度
this.Chart1.BorderlineWidth = 5;
//图表边框西安为细线
this.Chart1.BorderlineDashStyle = ChartDashStyle.Solid;
//标题
this.Chart1.Titles.Add("中国城市月平均气温走势图");
//图例
this.Chart1.Legends.Add("");
foreach (DataRow  row in ds.Tables [0].Rows )
{
    //定义数据点
    DataPoint point = new DataPoint(Convert.ToDouble(row["Month"]), Convert.ToDouble(row["AvgTemp"]));
    //设置每个数据点在X轴的标签文本
    point.AxisLabel = string.Format("{0}月", row["Month"]);
    //设置每个数据点的标签文本
    point.Label = string.Format("{0}℃", row["AvgTemp"]);
    //设置鼠标悬浮至数据点的提示文本
    point.LabelToolTip = string.Format("{0}月平均气温:{1}摄氏度", row["Month"], row["AvgTemp"]);
    this.Chart1.Series[row["chvCityName"].ToString()].Points.Add(point);
}


       //饼图

           

//检索重庆市月平均气温
string sql = @"select (case
                    when intScore<60 then '不及格'
                    when intScore<80 then '及格'
                    when intScore<90 then '良'
                    when intScore<=100 then '优秀' end) as Grade,
                    count(*) as 'Count' from scoreinfo
                    group by(case
                    when intScore<60 then '不及格'
                    when intScore<80 then '及格'
                    when intScore<90 then '良'
                    when intScore<=100 then '优秀' end)";
DataSet ds = SqlHelper1.Select(CommandType.Text, sql, null);
//为图表添加序列
this.Chart1.Series.Clear();
this.Chart1.Series.Add("Score");
//设置序列的图表类型
this.Chart1.Series["Score"].ChartType = SeriesChartType.Pie;
//设置背景颜色
this.Chart1.BackColor = Color.Pink;
//设置图表边框样式
this.Chart1.BorderlineColor = Color.Purple;
this.Chart1.BorderlineWidth = 5;
this.Chart1.BorderlineDashStyle = ChartDashStyle.Solid;
this.Chart1.Titles.Add("C#成绩统计图");
//文本颜色
this.Chart1.Series["Score"].LabelForeColor = Color.Gray;
//字体大小,样式
this.Chart1.Series["Score"].Font = new Font("宋体", 14);
//计算总人数
int total = 0;
foreach (DataRow row in ds.Tables[0].Rows)
{
    total += Convert.ToInt32(row["Count"]);
}
foreach (DataRow row in ds.Tables[0].Rows)
{
    //定义数据点
    DataPoint point = new DataPoint();
    //总人数
    point.YValues = new double[] { Convert.ToDouble(row["Count"]) };
    //设置每一个数据点标签的文本值为百分比
    point.Label = string.Format("{0:f2}%", Convert.ToDouble(row["Count"]) / total * 100);
    //设置图例
    this.Chart1.Legends.Add(row["Grade"].ToString());
    point.LegendText = row["Grade"].ToString();
    //将数据点添加到序列中
    this.Chart1.Series["Score"].Points.Add(point);
}
//将数据点标签显示到图示外侧
Chart1.Series["Score"]["PieLabelStyle"] = "Outside";
//将第一个数据点展开
Chart1.Series["Score"].Points[0]["Exploded"] = "true";


       //柱状图

           

//检索重庆市月平均气温
string sql = @"select (case
                    when intScore<60 then '不及格'
                    when intScore<80 then '及格'
                    when intScore<90 then '良'
                    when intScore<=100 then '优秀' end) as Grade,
                    count(*) as 'Count' from scoreinfo
                    group by(case
                    when intScore<60 then '不及格'
                    when intScore<80 then '及格'
                    when intScore<90 then '良'
                    when intScore<=100 then '优秀' end)";
DataSet ds = SqlHelper1.Select(CommandType.Text, sql, null);
//为图表添加序列
this.Chart1.Series.Clear();
this.Chart1.Series.Add("Score");
//设置序列的图表类型
this.Chart1.Series["Score"].ChartType = SeriesChartType.Column;
//设置背景颜色
this.Chart1.BackColor = Color.Pink;
//设置图表边框样式
this.Chart1.BorderlineColor = Color.Purple;
this.Chart1.BorderlineWidth = 5;
this.Chart1.BorderlineDashStyle = ChartDashStyle.Solid;
this.Chart1.Titles.Add("C#成绩统计图");
//文本颜色
this.Chart1.Series["Score"].LabelForeColor = Color.Gray;
//字体大小,样式
this.Chart1.Series["Score"].Font = new Font("宋体", 14);
//计算总人数
int total = 0;
foreach (DataRow row in ds.Tables[0].Rows)
{
    total += Convert.ToInt32(row["Count"]);
}
foreach (DataRow row in ds.Tables[0].Rows)
{
    //定义数据点
    DataPoint point = new DataPoint();
    //总人数
    point.YValues = new double[] { Convert.ToDouble(row["Count"]) };
    //设置每一个数据点标签的文本值为百分比
    point.Label = string.Format("{0}人", Convert.ToDouble(row["Count"]));
    point.AxisLabel = row["Grade"].ToString();
    //将数据点添加到序列中
    this.Chart1.Series["Score"].Points.Add(point);
    //设置数据点被点击后的回发值,该值可以在Click事件的ImageMapEventArgs参数中获取
    point.PostBackValue = string.Format("{0}|{1}", row["Grade"], row["Count"]);
}
//将数据点标签显示到图示外侧
Chart1.Series["Score"]["PieLabelStyle"] = "Outside";
//将第一个数据点展开
Chart1.Series["Score"].Points[0]["Exploded"] = "true";


5.XtraReports