/**/ ///<copyright>英网资讯技术有限公司1999-2007</copyright>///<version>1.0</version>///<author>zhangl</author>///<email>zhangl@hrbanlv.com</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();}#endregionstring[]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;#endregionvalueStr=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);}#endregionToPrint方法#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}