这里演示常用的三种图形(饼图、柱图、折线图)的做法。
1、使用饼图做产品销售额分析图。
private
void
BindCard(DataTable dt)
... {
string[] MonNum = new string[20];
string[] MonCount = new string[20];
decimal total = 0.0M;
string strXdata = String.Empty;
string strYdata = String.Empty;
//为数组赋值
for (int i = 0; i < dt.Rows.Count; i++)
...{
if (ddlDataType.SelectedIndex == 0)
...{
MonCount[i] = dt.Rows[i][2].ToString();
strYdata += MonCount[i] + " ";
}
else
...{
MonCount[i] = dt.Rows[i][1].ToString();
strYdata += MonCount[i] + " ";
}
MonNum[i] = ProductCate.GetDext(dt.Rows[i][0].ToString()); //名称
if (strXdata.Length == 0)
...{
strXdata = MonNum[i];
}
else
...{
strXdata += " " + MonNum[i];
}
}
foreach (string strValue in MonCount)
...{
if (!string.IsNullOrEmpty(strValue))
...{
strYdata += strValue + " ";
}
}
//创建ChartSpace对象来放置图表
ChartSpace laySpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表
ChChart InsertChart = laySpace.Charts.Add(0);
InsertChart.Type = (ChartChartTypeEnum)Enum.Parse(typeof(ChartChartTypeEnum), ddlPicType.SelectedValue);
//指定图表是否需要图例标注
InsertChart.HasLegend = true;
InsertChart.HasTitle = true;//为图表添加标题
InsertChart.Title.Caption = _Title;//标题名称
//添加一个series系列
InsertChart.SeriesCollection.Add(0);
//给定series系列的名字
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "产品销售额分布");
//给定分类
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
//给定值
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
ChDataLabels mytb = InsertChart.SeriesCollection[0].DataLabelsCollection.Add();
mytb.HasCategoryName = true; //显示项目名称
mytb.HasBubbleSize = true;
mytb.HasPercentage = true; //显示百分比
mytb.HasValue = true; //显示值
mytb.Separator = " ";
mytb.Font.Color = "Blue";
mytb.Font.Name = "Times New Roman";
string tempName = "Sum1";
string strRelativePath = "./" + tempName + ".gif";
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
laySpace.ExportPicture(strAbsolutePath, "GIF", 500, 400);
//把图片添加到placeholder中,并在页面上显示
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID="+MathClass.GetRandom(6)+"'/>";
phImg.Controls.Add(new LiteralControl(strImageTag));
}
... {
string[] MonNum = new string[20];
string[] MonCount = new string[20];
decimal total = 0.0M;
string strXdata = String.Empty;
string strYdata = String.Empty;
//为数组赋值
for (int i = 0; i < dt.Rows.Count; i++)
...{
if (ddlDataType.SelectedIndex == 0)
...{
MonCount[i] = dt.Rows[i][2].ToString();
strYdata += MonCount[i] + " ";
}
else
...{
MonCount[i] = dt.Rows[i][1].ToString();
strYdata += MonCount[i] + " ";
}
MonNum[i] = ProductCate.GetDext(dt.Rows[i][0].ToString()); //名称
if (strXdata.Length == 0)
...{
strXdata = MonNum[i];
}
else
...{
strXdata += " " + MonNum[i];
}
}
foreach (string strValue in MonCount)
...{
if (!string.IsNullOrEmpty(strValue))
...{
strYdata += strValue + " ";
}
}
//创建ChartSpace对象来放置图表
ChartSpace laySpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表
ChChart InsertChart = laySpace.Charts.Add(0);
InsertChart.Type = (ChartChartTypeEnum)Enum.Parse(typeof(ChartChartTypeEnum), ddlPicType.SelectedValue);
//指定图表是否需要图例标注
InsertChart.HasLegend = true;
InsertChart.HasTitle = true;//为图表添加标题
InsertChart.Title.Caption = _Title;//标题名称
//添加一个series系列
InsertChart.SeriesCollection.Add(0);
//给定series系列的名字
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "产品销售额分布");
//给定分类
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
//给定值
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
ChDataLabels mytb = InsertChart.SeriesCollection[0].DataLabelsCollection.Add();
mytb.HasCategoryName = true; //显示项目名称
mytb.HasBubbleSize = true;
mytb.HasPercentage = true; //显示百分比
mytb.HasValue = true; //显示值
mytb.Separator = " ";
mytb.Font.Color = "Blue";
mytb.Font.Name = "Times New Roman";
string tempName = "Sum1";
string strRelativePath = "./" + tempName + ".gif";
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
laySpace.ExportPicture(strAbsolutePath, "GIF", 500, 400);
//把图片添加到placeholder中,并在页面上显示
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID="+MathClass.GetRandom(6)+"'/>";
phImg.Controls.Add(new LiteralControl(strImageTag));
}
2、使用柱图做区域销售额分析图
private
void
BindCard(DataTable dt)
... {
string strSeriesName = "销售额分布区域图";
//存放月
string[] MonNum = new string[100];
//存放数据
string[] MonCount = new string[100];
decimal total = 0.0M;
string strXdata = String.Empty;
string strYdata = String.Empty;
//为数组赋值
for (int i = 0; i < dt.Rows.Count; i++)
...{
MonCount[i] = dt.Rows[i][2].ToString();
strYdata += MonCount[i] + " ";
MonNum[i] = dt.Rows[i][1].ToString();
if (strXdata.Length == 0)
...{
strXdata = MonNum[i];
}
else
...{
strXdata += " " + MonNum[i];
}
}
foreach (string strValue in MonCount)
...{
if (!string.IsNullOrEmpty(strValue))
...{
strYdata += strValue + " ";
}
}
//创建ChartSpace对象来放置图表
ChartSpace laySpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表
ChChart InsertChart = laySpace.Charts.Add(0);
InsertChart.HasTitle = true;//为图表添加标题
InsertChart.Title.Caption = _Title;//标题名称
//为x,y轴添加图示说明
InsertChart.Axes[0].HasTitle = false;
InsertChart.Axes[1].HasTitle = false;
//添加一个series系列
InsertChart.SeriesCollection.Add(0);
InsertChart.SeriesCollection[0].Line.Color = "Red";
//给定series系列的名字
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "");
//给定分类
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
//给定值
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
ChDataLabels mytb = InsertChart.SeriesCollection[0].DataLabelsCollection.Add();
//mytb.HasPercentage = true; //显示百分比
mytb.HasValue = true; //显示值
mytb.Font.Color = "Blue";
mytb.Font.Name = "Times New Roman";
string tempName = "Sum2";
string strRelativePath = "./" + tempName + ".gif";
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
laySpace.ExportPicture(strAbsolutePath, "GIF", 800, 400);
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID=" + MathClass.GetRandom(6) + "'/>"; //给图片路径添加一个随即参数,解决图片不刷新的问题。
phImg.Controls.Add(new LiteralControl(strImageTag));
}
... {
string strSeriesName = "销售额分布区域图";
//存放月
string[] MonNum = new string[100];
//存放数据
string[] MonCount = new string[100];
decimal total = 0.0M;
string strXdata = String.Empty;
string strYdata = String.Empty;
//为数组赋值
for (int i = 0; i < dt.Rows.Count; i++)
...{
MonCount[i] = dt.Rows[i][2].ToString();
strYdata += MonCount[i] + " ";
MonNum[i] = dt.Rows[i][1].ToString();
if (strXdata.Length == 0)
...{
strXdata = MonNum[i];
}
else
...{
strXdata += " " + MonNum[i];
}
}
foreach (string strValue in MonCount)
...{
if (!string.IsNullOrEmpty(strValue))
...{
strYdata += strValue + " ";
}
}
//创建ChartSpace对象来放置图表
ChartSpace laySpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表
ChChart InsertChart = laySpace.Charts.Add(0);
InsertChart.HasTitle = true;//为图表添加标题
InsertChart.Title.Caption = _Title;//标题名称
//为x,y轴添加图示说明
InsertChart.Axes[0].HasTitle = false;
InsertChart.Axes[1].HasTitle = false;
//添加一个series系列
InsertChart.SeriesCollection.Add(0);
InsertChart.SeriesCollection[0].Line.Color = "Red";
//给定series系列的名字
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "");
//给定分类
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
//给定值
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
ChDataLabels mytb = InsertChart.SeriesCollection[0].DataLabelsCollection.Add();
//mytb.HasPercentage = true; //显示百分比
mytb.HasValue = true; //显示值
mytb.Font.Color = "Blue";
mytb.Font.Name = "Times New Roman";
string tempName = "Sum2";
string strRelativePath = "./" + tempName + ".gif";
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
laySpace.ExportPicture(strAbsolutePath, "GIF", 800, 400);
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID=" + MathClass.GetRandom(6) + "'/>"; //给图片路径添加一个随即参数,解决图片不刷新的问题。
phImg.Controls.Add(new LiteralControl(strImageTag));
}
3、做折线图产品销量走势图
private
void
BindCard(DataTable dt)
... {
string strSeriesName = " 销售额走势图";
//存放月
string[] MonNum = new string[1000];
//存放数据
string[] MonCount = new string[1000];
decimal total = 0.0M;
string strXdata = String.Empty;
string strYdata = String.Empty;
//为数组赋值
for (int i = 0; i < dt.Rows.Count; i++)
...{
MonCount[i] = dt.Rows[i][2].ToString();
if (string.IsNullOrEmpty(MonCount[i]))
...{
strYdata += "0 ";
}
else
...{
strYdata += MonCount[i] + " ";
}
MonNum[i] = dt.Rows[i][1].ToString();
strXdata += MonNum[i] + " ";
}
//创建ChartSpace对象来放置图表
ChartSpace laySpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表
ChChart InsertChart = laySpace.Charts.Add(0);
InsertChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图
InsertChart.HasTitle = true;//为图表添加标题
InsertChart.Title.Caption = _Title;//标题名称
InsertChart.Axes[0].HasTitle = false;
InsertChart.Axes[1].HasTitle = false;
InsertChart.SeriesCollection.Add(0);
InsertChart.SeriesCollection[0].Line.Color = "Red";
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "");
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
string tempName = "Sum3";
string strRelativePath = "./" + tempName + ".gif";
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
laySpace.ExportPicture(strAbsolutePath, "GIF", 800, 400);
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID=" + MathClass.GetRandom(6) + "'/>";
phImg.Controls.Add(new LiteralControl(strImageTag));
GridView1.DataSource = dt;
GridView1.DataBind();
}
... {
string strSeriesName = " 销售额走势图";
//存放月
string[] MonNum = new string[1000];
//存放数据
string[] MonCount = new string[1000];
decimal total = 0.0M;
string strXdata = String.Empty;
string strYdata = String.Empty;
//为数组赋值
for (int i = 0; i < dt.Rows.Count; i++)
...{
MonCount[i] = dt.Rows[i][2].ToString();
if (string.IsNullOrEmpty(MonCount[i]))
...{
strYdata += "0 ";
}
else
...{
strYdata += MonCount[i] + " ";
}
MonNum[i] = dt.Rows[i][1].ToString();
strXdata += MonNum[i] + " ";
}
//创建ChartSpace对象来放置图表
ChartSpace laySpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表
ChChart InsertChart = laySpace.Charts.Add(0);
InsertChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图
InsertChart.HasTitle = true;//为图表添加标题
InsertChart.Title.Caption = _Title;//标题名称
InsertChart.Axes[0].HasTitle = false;
InsertChart.Axes[1].HasTitle = false;
InsertChart.SeriesCollection.Add(0);
InsertChart.SeriesCollection[0].Line.Color = "Red";
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "");
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
string tempName = "Sum3";
string strRelativePath = "./" + tempName + ".gif";
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
laySpace.ExportPicture(strAbsolutePath, "GIF", 800, 400);
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID=" + MathClass.GetRandom(6) + "'/>";
phImg.Controls.Add(new LiteralControl(strImageTag));
GridView1.DataSource = dt;
GridView1.DataBind();
}
在使用代码前请先添加COM组件“Microsoft.Office.Interop.Owc11”的引用