使用owc11制作图表又一实例


/**/ ///<copyright>英网资讯技术有限公司1999-2007</copyright>
///<version>1.0</version>
///<author>zhangl</author>
///<email>[email protected]</email>
///<logdate="2007-07-20">创建</log>
///


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 Data;
using SQL;
using Business;
using Microsoft.Office.Interop.Owc11;
using System.IO;
using EHR.Base;

public partial class Report_Chart_zhutu_ChartPost:BasePage
... {
protectedDataTabledt;
protectedDataTableDeptTable;
protectedDepartDTdetail=newDepartDT();
protectedDataSetds;

protectedvoidPage_Load(objectsender,EventArgse)
...{
Initial();
}


初始化数据#region初始化数据
privatevoidInitial()
...{

if(this.Request.QueryString["deptno"]!=null)
...{
detail.DeptNo
=this.Request.QueryString["deptno"].ToString();//部门no参数
}

else
...{
detail.DeptNo
="";
}

if(this.Request.QueryString["deptname"]!=null)
...{
detail.depname
=this.Request.QueryString["deptname"].ToString();//部门名称参数
}

else
...{
detail.depname
="";
}


using(ChartBNbn=newChartBN())
...{
ds
=bn.GetChartPost(detail);
dt
=ds.Tables[0];
bn.Dispose();
DeptTable
=ds.Tables[1];

}


将表中一列数据填充到数组--动态得到横坐标的文字#region 将表中一列数据填充到数组--动态得到横坐标的文字
string[]column=newstring[DeptTable.Rows.Count];
for(inti=0;i<DeptTable.Rows.Count;i++)
...{
column[i]
=DeptTable.Rows[i]["postname"].ToString();
}

#endregion


string[]categoryArr=column;
stringcategoryStr=string.Join(" ",categoryArr);
stringvalueStr="";

动态得到对应横坐标上的纵坐标上的文字#region动态得到对应横坐标上的纵坐标上的文字

string[]column1=newstring[DeptTable.Rows.Count];
stringvalue;
for(intm=0;m<DeptTable.Rows.Count;m++)
...{
value
=dt.Rows[dt.Rows.Count-1][m+1].ToString()==""?"0":dt.Rows[dt.Rows.Count-1][m+1].ToString();
column1[m]
=value;
}

string[]valueArrs=column1;
#endregion



valueStr
=string.Join(" ",valueArrs);

string[]valueArr=newstring[]...{valueStr};
stringtitle=this.Request.QueryString["deptname"]==null?"全体员工":this.Request.QueryString["deptname"].ToString();//得到图表右边的名称

string[]titleArr=newstring[]...{title};

string[]colorArr=newstring[]...{"#9999FF"};

ToPrint(categoryStr,valueArr,titleArr,colorArr);
}

#endregion


ToPrint方法#regionToPrint方法
privatevoidToPrint(stringcategoryStr,string[]valueArr,string[]titleArr,string[]colorArr)
...{
//新建一个绘图空间
ChartSpaceobjCSpace=newChartSpace();


//在绘图空间中新建一个图表
ChChartobjChart=objCSpace.Charts.Add(0);
//objChart.Type=ChartChartTypeEnum.chChartTypeColumnClustered3D;//指定图表的类型为3D柱状
objChart.Type=ChartChartTypeEnum.chChartTypeColumnClustered;//平面柱状
objChart.HasLegend=true;//指定图表是否需要图例

//标题
objChart.HasTitle=true;
objChart.Title.Caption
="员工职称分析图表";//得到部门名称
objChart.Title.Font.Size=9;
objChart.Title.Font.Name
="宋体";
objChart.Title.Font.Bold
=true;

objChart.PlotArea.Interior.Color
="#C0C0C0";//绘图区的背景颜色
objChart.PlotArea.Floor.Interior.Color="#888888";//绘图区的底色

objChart.Legend.Font.Size
=9;//图例的字体

for(inti=0;i<valueArr.Length;i++)
...{
//在图表中添加一个数据系列
ChSeriesobjSeries=objChart.SeriesCollection.Add(i);
objSeries.SetData(ChartDimensionsEnum.chDimSeriesNames,ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),titleArr[i]);
objSeries.SetData(ChartDimensionsEnum.chDimCategories,ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),categoryStr);
objSeries.SetData(ChartDimensionsEnum.chDimValues,ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),valueArr[i]);
objSeries.Interior.Color
=colorArr[i];//柱子内部的颜色
objSeries.GapWidth=300;//柱子之间的间隙

ChDataLabelsobjDataLabels
=objChart.SeriesCollection[i].DataLabelsCollection.Add();
objDataLabels.HasValue
=true;//柱子上面的数字是否显示
objDataLabels.Font.Color="Red";//柱子上面的数字颜色是黑色的
}


stringfilename="zhicheng.gif";
stringstrAbsolutePath=HttpContext.Current.Server.MapPath(".")+"/chartimg";
if(!Directory.Exists(strAbsolutePath))
...{
Directory.CreateDirectory(strAbsolutePath);
}

strAbsolutePath
=HttpContext.Current.Server.MapPath(".")+"/chartimg"+"/"+filename;
objCSpace.ExportPicture(strAbsolutePath,
"GIF",700,300);//输出成GIF文件.
this.Image1.ImageUrl="chartimg/"+filename;

喷出图片#region喷出图片
//objectobjPic=objCSpace.GetPicture("GIF",700,300);

//Response.Buffer=true;
//Response.ContentType="image/gif";
//Response.BinaryWrite((byte[])objPic);
//Response.End();
#endregion

}


#endregion

}

你可能感兴趣的:(实例)