

/**////<copyright>英网资讯技术有限公司1999-2007</copyright>
///<version>1.0</version>
///<author>zhangl</author>
///<email>zhangl@hrbanlv.com</email>
///<logdate="2007-07-20">创建</log>
///
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingData;
usingSQL;
usingBusiness;
usingMicrosoft.Office.Interop.Owc11;
usingSystem.IO;
usingEHR.Base;
publicpartialclassReport_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
}
本文介绍了一种通过ASP.NET Web应用程序生成员工职称分析图表的方法。该应用从数据库获取部门及职称数据,动态创建柱状图,并将其输出为GIF文件。文章详细展示了如何设置图表属性、填充数据以及导出图表。
1万+

被折叠的 条评论
为什么被折叠?



