//竖状柱状图+曲线图 public string ChartTypeColumnClustered2(string strDataName, string data1, string data2, string data3, string data4, string caption) { var mychartSpace = new ChartSpace(); var mychart = mychartSpace.Charts.Add(0); mychart.HasLegend = false; mychart.HasTitle = true; mychart.Title.Caption = caption; var chart1 = mychart.SeriesCollection.Add(0); chart1.Type = ChartChartTypeEnum.chChartTypeColumnClustered; chart1.SetData(DimCategories,DataLiteral, strDataName); chart1.SetData(DimValues, DataLiteral, data1); chart1.DataLabelsCollection.Add().HasValue = true; var chSeries1 = mychart.SeriesCollection.Add(0); chSeries1.Type = ChartChartTypeEnum.chChartTypeSmoothLine; chSeries1.SetData(DimValues, DataLiteral, data2); var chSeries2 = mychart.SeriesCollection.Add(0); chSeries2.Type = ChartChartTypeEnum.chChartTypeSmoothLine; chSeries2.SetData(DimValues, DataLiteral, data3); var chSeries3 = mychart.SeriesCollection.Add(0); chSeries3.Type = ChartChartTypeEnum.chChartTypeSmoothLine; chSeries3.SetData(DimValues, DataLiteral, data4); var image = UrlPath("柱状曲线图"); mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
protected void Page_Load(object sender, EventArgs e) { //创建图表控件 ChartSpace myspace = new ChartSpace(); //添加一个图表对象 ChChart mychart = myspace.Charts.Add(0); //设置图表类型为柱形 mychart.Type = ChartChartTypeEnum.chChartTypePie; //设置图表的相关属性 mychart.HasLegend = true; //添加图列 mychart.HasTitle = true; //添加主题 mychart.Title.Caption = "员工信息图表"; //设置主题内容 //连接数据库 String str = ConfigurationManager.ConnectionStrings["connection"].ConnectionString.ToString(); SqlConnection con = new SqlConnection(str); con.Open(); String sel = "select jiguan,count(jiguan) as number from xx group by jiguan"; SqlDataAdapter adsa = new SqlDataAdapter(sel, con); DataSet adds = new DataSet(); adsa.Fill(adds); if (adds.Tables[0].Rows.Count > 0) { string strDataName = ""; string strData = ""; //添加图表块 mychart.SeriesCollection.Add(0); //添加图表数据 for (int j = 0; j < adds.Tables[0].Rows.Count; j++) { if (j == adds.Tables[0].Rows.Count - 1) { strDataName += adds.Tables[0].Rows[j][0].ToString(); } else { strDataName += adds.Tables[0].Rows[j][0].ToString() + "\t"; } strData += adds.Tables[0].Rows[j][1].ToString() + "\t"; } //设置图表的属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strDataName); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strData); //设置百分比 ChDataLabels labels = mychart.SeriesCollection[0].DataLabelsCollection.Add(); labels.HasPercentage = true; } con.Close(); myspace.ExportPicture(Server.MapPath(".") + @"\temp.jpg", "jpg", 600, 450); }
protected void Page_Load(object sender, EventArgs e) { //创建ChartSpace对象来放置图表 ChartSpace laySpace = new ChartSpace(); //在ChartSpace对象中添加图表 ChChart InsertChart = laySpace.Charts.Add(0); //指定绘制图表类型 InsertChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图 //指定图表是否需要图例标注 InsertChart.HasLegend = false; InsertChart.HasTitle = true;//为图表添加标题 InsertChart.Title.Caption = "员工信息表"; //为x,y轴添加图示说明 InsertChart.Axes[0].HasTitle = true; InsertChart.Axes[0].Title.Caption = "籍贯"; InsertChart.Axes[1].HasTitle = true; InsertChart.Axes[1].Title.Caption = "人数"; //连接数据库 String str = ConfigurationManager.ConnectionStrings["connection"].ConnectionString.ToString(); SqlConnection con = new SqlConnection(str); con.Open(); String sel = "select jiguan,count(jiguan) as number from xx group by jiguan"; SqlDataAdapter adsa = new SqlDataAdapter(sel, con); DataSet adds = new DataSet(); adsa.Fill(adds); //为x,y轴指定特定字符串,以便显示数据 string strXdata = String.Empty; string strYdata = String.Empty; if (adds.Tables[0].Rows.Count > 0) { for (int i = 0; i < adds.Tables[0].Rows.Count; i++) { strXdata = strXdata + adds.Tables[0].Rows[i][0].ToString() + "\t"; strYdata = strYdata + adds.Tables[0].Rows[i][1].ToString() + "\t"; } } //添加图表块 InsertChart.SeriesCollection.Add(0); //设置图表的属性 InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata); InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata); con.Close(); laySpace.ExportPicture(Server.MapPath(".") + @"\temp.jpg", "jpg", 600, 450); }
protected void Page_Load(object sender, EventArgs e) { //创建图表控件 ChartSpace myspace = new ChartSpace(); //添加一个图表对象 ChChart mychart = myspace.Charts.Add(0); //设置图表类型为柱形 mychart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; //设置图表的相关属性 mychart.HasLegend = true; //添加图列 mychart.HasTitle = true; //添加主题 mychart.Title.Caption = "员工信息图表"; //设置主题内容 //设置x,y轴 mychart.Axes[0].HasTitle = true; mychart.Axes[0].Title.Caption = "籍贯"; mychart.Axes[1].HasTitle = true; mychart.Axes[1].Title.Caption = "人数"; //连接数据库 String str = ConfigurationManager.ConnectionStrings["connection"].ConnectionString.ToString(); SqlConnection con = new SqlConnection(str); con.Open(); String sel = "select jiguan,count(jiguan) as number from xx group by jiguan"; SqlDataAdapter adsa = new SqlDataAdapter(sel, con); DataSet adds = new DataSet(); adsa.Fill(adds); if (adds.Tables[0].Rows.Count > 0) { //添加图表块 for (int i = 0; i < adds.Tables[0].Rows.Count; i++) { mychart.SeriesCollection.Add(0); } for (int j = 0; j < adds.Tables[0].Rows.Count; j++) { //设置图表的属性 mychart.SeriesCollection[j].Caption = adds.Tables[0].Rows[j][0].ToString(); mychart.SeriesCollection[j].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, adds.Tables[0].Rows[j][0].ToString()); mychart.SeriesCollection[j].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, Convert.ToInt32(adds.Tables[0].Rows[j][1].ToString())); } } con.Close(); myspace.ExportPicture(Server.MapPath(".") + @"\temp.jpg", "jpg", 600, 450); }
protected string DrawChart(string DrawType, string[] AllDepartment, string[] AllDataRote, string Range) { string strXdata = string.Empty; for (int i = 0; i < AllDepartment.Length; i++) { strXdata += AllDepartment[i] + "\r" + DrawType + AllDataRote[i] + "\t"; } string strYdata = string.Empty; foreach (string strValue in AllDataRote) { strYdata += strValue + "\t"; } ChartSpace laySpace = new ChartSpace(); ChChart InsertChart = laySpace.Charts.Add(0); InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; InsertChart.HasLegend = false; InsertChart.HasTitle = true; InsertChart.Title.Caption = "第" + Range + "周各系部学生【" + DrawType + "】对比图"; InsertChart.Axes[0].HasTitle = true; InsertChart.Axes[0].Title.Caption = "系部"; InsertChart.Axes[1].HasTitle = true; InsertChart.Axes[1].Title.Caption = DrawType; InsertChart.SeriesCollection.Add(0); InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "图例1"); InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata); InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata); string strAbsolutePath = (Server.MapPath(".")) + "\\" + DrawType + ".gif"; laySpace.ExportPicture(strAbsolutePath, "GIF", 1730, 400); string strRelativePath = "./" + DrawType + ".gif"; Random rd = new Random(); string strImageTag = "<IMG SRC='" + strRelativePath + "?id=" + rd.Next(65500) + "'>"; string url = "DepartmentEachCompare.aspx?ImageUrl=" + strImageTag; return(strImageTag); }
//竖状柱状图--叠加--100%Y柱(封顶) public string ChartTypeColumnClustered1(string strDataName, Dictionary<string, string> list,string title) { var mychartSpace = new ChartSpace(); var mychart = mychartSpace.Charts.Add(0); mychart.Type = ChartChartTypeEnum.chChartTypeColumnStacked100; mychart.HasLegend = true; mychart.HasTitle = true; mychart.Title.Caption = title; mychart.Axes[1].NumberFormat = "0%"; foreach (var dic in list) { var keys = mychart.SeriesCollection.Add(0); keys.SetData(DimValues, DataLiteral, dic.Value); //keys.DataLabelsCollection.Add().HasValue = true; keys.Caption = dic.Key; keys.DataLabelsCollection.Add().NumberFormat = "0.0%"; } mychart.SeriesCollection[0].SetData(DimCategories, DataLiteral, strDataName); var image = UrlPath("柱状叠加封顶图"); mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
/*Draw PieChart */ protected void DrawPieChart() { Image[] thisimage = { Image1, Image2, Image7, Image6, Image3 }; string[] fileName = new string[5]; for (int i = 0; i < 5; i++) { ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypePie3D;//chChartTypeColumnClustered objChart.HasTitle = true; objChart.Title.Font.Size = 12; objChart.Title.Caption = GetTitle(i); objChart.Title.Font.Bold = true; objChart.SeriesCollection.Add(0); objChart.HasLegend = true; objChart.SeriesCollection[0].DataLabelsCollection.Add(); objChart.SeriesCollection[0].DataLabelsCollection[0].HasValue = false; objChart.SeriesCollection[0].DataLabelsCollection[0].HasPercentage = true; objChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionAutomatic; string dimCatgories = GetDimCategories(i); string dimVales = GetDimValues(i); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCatgories); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimVales); Random ro = new Random(); int a = ro.Next(); dateI = a.ToString(); fileName[i] = "pchart" + i.ToString() + dateI + ".gif"; string filePath = Server.MapPath("~"); filePath = filePath + @"\ChartImages\" + fileName[i]; objSpace.ExportPicture(filePath, "gif", 250, 200); thisimage[i].ImageUrl = "~/ChartImages/" + fileName[i]; if (dimVales != null) { thisimage[i].Visible = true; } thisimage[i].Dispose(); } }
private void MakeLineChart(DataTable mDataTable)//string[] DataName,string[] Data,string[] Data1, string[] Data2) { string strValue1 = ""; string strValue = ""; string strValue2 = ""; string strCateory = ""; //循环取得数据并格式化为OWC10需要的格式,(加'\t') foreach (DataRow mRow in mDataTable.Rows) { strCateory += mRow[0].ToString() + '\t'; strValue += mRow[1].ToString() + '\t'; strValue1 += mRow[2].ToString() + '\t'; } ChartSpace mySpace = new ChartSpace(); ChChart myChart = mySpace.Charts.Add(0); myChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; myChart.HasLegend = true; myChart.HasTitle = true; if (cbDate.Checked == true) { myChart.Title.Caption = dtpStart.Value.ToString("yyyy年MM月dd日--") + dtpEnd.Value.ToString("yyyy年MM月dd日") + cmbCompareType.Text + "交易曲线图"; } else { myChart.Title.Caption = "交易曲线图"; } myChart.Axes[0].HasTitle = true; myChart.Axes[0].Title.Caption = mDataTable.Columns[0].Caption; myChart.Axes[1].HasTitle = true; myChart.Axes[1].Title.Caption = "总额"; myChart.SeriesCollection.Add(0); //myChart. myChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, mDataTable.Columns[1].Caption); myChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strCateory); ChDataLabels myLabels1 = myChart.SeriesCollection[0].DataLabelsCollection.Add(); myLabels1.NumberFormat = "0.00"; myLabels1.HasValue = true; myChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue); if (strValue1 != "") { myChart.SeriesCollection.Add(1); myChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, mDataTable.Columns[2].Caption); myChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue1); ChDataLabels myLabels2 = myChart.SeriesCollection[1].DataLabelsCollection.Add(); myLabels2.NumberFormat = "0.00"; myLabels2.HasValue = true; } //if (strValue2 !="") //{ // myChart.SeriesCollection.Add(2); // myChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue2); // ChDataLabels myLabels3 = myChart.SeriesCollection[2].DataLabelsCollection.Add(); // myLabels3.NumberFormat = "0.00"; // myLabels3.HasValue = true; //} //if (pictureBox1.Image != null) //{ // pictureBox1.Image.Dispose(); //} string mPath = Application.StartupPath + @"temp.gif"; //临时图片保存地址 System.IO.File.Delete(mPath); mySpace.ExportPicture(mPath, "GIF", pictureBox1.Width, pictureBox1.Height); //Image image = Image.FromFile(@"C:\temp.gif"); //Image image1 = (Image)image.Clone(); //image.Dispose(); FileStream mFs = File.OpenRead(mPath); pictureBox1.Image = Image.FromStream(mFs); mFs.Close(); //pictureBox1.Size = image.Size; //pictureBox1.Visible = true; }
// ------------------------------------------------------------- protected void DrawSlide_Seven() { int slideNum = segmentNumber / 3 + (segmentNumber % 3 == 0 ? 0 : 1); for (int i = 0; i < slideNum; i++) { bool isNull = false; slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, "BOOKING BY REGIONS"); int chartNum = 3; if (i == (slideNum - 1)) { switch (segmentNumber % 3) { case 1: chartNum = 1; break; case 2: chartNum = 2; break; } } DataSet[] ds = new DataSet[chartNum]; for (int j = 0; j < chartNum; j++) { float[] x = { 60, 370, 215 }; float[] y = { 80, 80, 380 }; ds[j] = getSlide_Seven(alSegment[3 * i + j].ToString()); if (ds[j].Tables.Count > 0 && ds[j].Tables[0].Rows.Count > 0) { isNull = true; ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; string dimValuesYear = ""; string dimValuesNextYear = ""; for (int k = 0; k < regionNumber; k++) { dimValuesYear += ds[j].Tables[0].Rows[0][k + 1].ToString().Trim() + "\t"; if (ds[j].Tables[0].Rows.Count > 1) dimValuesNextYear += ds[j].Tables[0].Rows[1][k + 1].ToString().Trim() + "\t"; else dimValuesNextYear += " \t"; } for (int l = 0; l < 2; l++) { objChart.SeriesCollection.Add(l); objChart.HasTitle = true; objChart.HasLegend = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; objChart.Title.Caption = alSegment[3 * i + j].ToString().Trim() + " Regions"; if (ds[j].Tables[0].Rows.Count > 1) { objChart.SeriesCollection[l].Caption = ds[j].Tables[0].Rows[l][0].ToString(); objChart.SeriesCollection[l].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimRegionCategories); } } objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValuesYear); objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValuesNextYear); objSpace.ExportPicture(picturePath, "GIF", 500, 400); picturePath = pictureFolderPath + pictureName; if (chartNum == 3) { if (ds[0].Tables.Count == 0 || ds[0].Tables[0].Rows.Count == 0) { x[1] = x[0]; y[1] = y[0]; } if (ds[0].Tables.Count == 0 || ds[0].Tables[0].Rows.Count == 0) { x[2] = x[1]; y[2] = y[1]; } } InsertPicture(slide, picturePath, x[j], y[j], 500, 400); } } if (isNull == false) { slideIndex--; } } }
//-------------------------------------------------------------------------- protected void DrawSlide_Nine() { slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, "BOOKING BY REGIONS"); ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); DataSet ds_dimValues = getSlide_Nine(); if (ds_dimValues.Tables[0].Rows.Count > 0) { objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; //string dimCategories = ""; string dimValuesYear = ""; string dimValuesNextYear = ""; for (int k = 1; k < ds_dimValues.Tables[0].Columns.Count; k++) { var num1 = ds_dimValues.Tables[0].Rows[0][k]; var num2 = ds_dimValues.Tables[0].Rows[1][k]; if (num1 is DBNull) dimValuesYear += "0\t"; else dimValuesYear += num1.ToString() + "\t"; if (num2 is DBNull) dimValuesNextYear += "0\t"; else dimValuesNextYear += num2.ToString() + "\t"; } dimValuesYear = dimValuesYear.Substring(0, dimValuesYear.Length - 1); dimValuesNextYear = dimValuesNextYear.Substring(0, dimValuesNextYear.Length - 1); objChart.SeriesCollection.Add(0); objChart.SeriesCollection.Add(1); objChart.HasLegend = true; objChart.HasTitle = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; objChart.Title.Caption = "All Region"; objChart.SeriesCollection[0].Caption = meeting.getyear().Substring(2, 2).Trim() + " A"; objChart.SeriesCollection[1].Caption = meeting.getnextyear().Substring(2, 2).Trim() + " F"; objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimRegionCategories); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValuesYear); objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimRegionCategories); objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValuesNextYear); } objSpace.ExportPicture(picturePath, "GIF", 500, 400); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, 80, 120, 500, 400); }
//-------------------------------------------------------- protected void DrawSlide_Four() { int slideNum = 0; int chartsNum = 0; slideNum = (segmentNumber / 2) + (segmentNumber % 2 == 0 ? 0 : 1); for (int j = 0; j < slideNum; j++) { bool isNull = false; slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, "HP " + meeting.getyear().Trim() + " - " + meeting.getnextyear().Trim() + " Bookings"); InsertText(slide, "5 Top Countries", 215, 50, 260, 35, 24); DataSet[] ds = new DataSet[4]; DataSet[] ds_FourTotal = new DataSet[4]; ds[0] = getSlide_Four(meeting.getyear(), alSegment[2 * j].ToString()); ds_FourTotal[0] = getSlide_FourTotal(meeting.getyear(), alSegment[2 * j].ToString()); ds[1] = getSlide_Four(meeting.getnextyear(), alSegment[2 * j].ToString()); ds_FourTotal[1] = getSlide_FourTotal(meeting.getnextyear(), alSegment[2 * j].ToString()); if ((2 * j + 1) < segmentNumber) { ds[2] = getSlide_Four(meeting.getyear(), alSegment[2 * j + 1].ToString()); ds_FourTotal[2] = getSlide_FourTotal(meeting.getyear(), alSegment[2 * j + 1].ToString()); ds[3] = getSlide_Four(meeting.getnextyear(), alSegment[2 * j + 1].ToString()); ds_FourTotal[3] = getSlide_FourTotal(meeting.getnextyear(), alSegment[2 * j + 1].ToString()); } chartsNum = (segmentNumber % 2 == 1 && j == (slideNum - 1) ? 2 : 4); for (int k = 0; k < chartsNum; k++) { if (ds[k].Tables.Count > 0 && ds[k].Tables[0].Rows.Count > 0) { isNull = true; ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypePie3D; objChart.HasLegend = true; objChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; if (k == 0) { objChart.HasTitle = true; objChart.Title.Caption = alSegment[2 * j].ToString().Trim(); } if (k == 2) { objChart.HasTitle = true; objChart.Title.Caption = alSegment[2 * j + 1].ToString().Trim(); } objChart.SeriesCollection.Add(0); //objChart.SeriesCollection[0].Caption = titile.ToString(); objChart.SeriesCollection[0].DataLabelsCollection.Add(); string dimCategories = ""; string dimValues = ""; double total = (double)ds_FourTotal[k].Tables[0].Rows[0][0]; double total1 = 0; for (int m = 0; m < ds[k].Tables[0].Rows.Count; m++) { total1 += (double)ds[k].Tables[0].Rows[m][1]; dimCategories += ds[k].Tables[0].Rows[m][0].ToString() + "\t"; dimValues += String.Format("{0:F}", 100 * (double)ds[k].Tables[0].Rows[m][1] / total) + "\t"; } dimCategories += "Others"; dimValues += String.Format("{0:F}", 100 * (total - total1) / total); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCategories); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); objChart.SeriesCollection[0].DataLabelsCollection[0].HasPercentage = true; objChart.SeriesCollection[0].DataLabelsCollection[0].HasValue = false; objChart.SeriesCollection[0].DataLabelsCollection[0].Position = Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionCenter; objSpace.ExportPicture(picturePath, "GIF", 260, 200); picturePath = pictureFolderPath + pictureName; if (ds[0].Tables[0].Rows.Count == 0 && ds[1].Tables[0].Rows.Count == 0) { x_four[2] = 215; x_four[3] = 215; } InsertPicture(slide, picturePath, x_four[k], y_four[k], 260, 180); } } slide.Shapes.AddLine(0, 290, 720, 290); InsertText(slide, meeting.getyear().Trim(), 95, 100, 60, 25, 14); InsertText(slide, meeting.getnextyear().Trim(), 95, 320, 60, 25, 14); if (isNull == false) { slideIndex--; } } }
//--------------------------------------------------------------------------------- protected void DrawSlide_Two() { slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, "Sales Forcast"); ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeColumnStacked; objChart.HasLegend = true; string dimCategories = ""; DataSet dsAdd = getSlide_TwoAdd(); DataSet ds = getSlide_Two(); if (ds != null) { for (int k = 0; k < ds.Tables[0].Rows.Count; k++) { string str = ds.Tables[0].Rows[k][0].ToString(); if (k != ds.Tables[0].Rows.Count - 1) dimCategories += str + "\t"; else dimCategories += meeting.getnextyear().Trim() + " E/B\t"; } dimCategories = dimCategories.Substring(0, dimCategories.Length - 1); for (int i = 0; i < segmentNumber; i++) { string dimValues = ""; for (int g = 0; g < ds.Tables[0].Rows.Count; g++) { var num1 = ds.Tables[0].Rows[g][i + 1]; if (dsAdd != null) { var num2 = dsAdd.Tables[0].Rows[g][i + 1]; dimValues += (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString() + "\t"; } else dimValues += Convert.ToDouble(num1 is DBNull ? 0 : num1).ToString() + "\t"; } dimValues = dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(i); objChart.SeriesCollection[i].Caption = alSegment[i].ToString(); objChart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCategories); objChart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); } picturePath = pictureFolderPath + pictureName; objSpace.ExportPicture(picturePath, "GIF", 500, 350); InsertPicture(slide, picturePath, 60, 160, 600, 350); float startPosition = 37; double preyearTotal = 0; double yearTotal = 0; double nextyearTotal = 0; for (int m = 0; m < ds.Tables[0].Rows.Count; m++) { double total = 0; for (int n = 1; n < ds.Tables[0].Columns.Count; n++) { var num1 = ds.Tables[0].Rows[m][n]; total = Convert.ToDouble(num1 is DBNull ? 0 : num1); if (dsAdd != null) { var num2 = dsAdd.Tables[0].Rows[m][n]; total += Convert.ToDouble(num2 is DBNull ? 0 : num2); } } switch (m) { case 0: preyearTotal = total; break; case 1: yearTotal = total; break; case 4: nextyearTotal = total; break; } startPosition += 80; InsertText(slide, total.ToString(), startPosition, 80, 50, 20, 10); } InsertText(slide, "Eur 0’", 600, 20, 50, 30, 14); slide.Shapes.AddShape(MsoAutoShapeType.msoShapeCurvedDownArrow, 130, 105, 100, 50); slide.Shapes.AddShape(MsoAutoShapeType.msoShapeCurvedDownArrow, 220, 105, 265, 50); string recent = String.Format("{0:N1}", 100 * (nextyearTotal - yearTotal) / yearTotal); InsertText(slide, recent, 310, 130, 50, 30, 14); InsertText(slide, meeting.getyear() + " Standard Exchange", 550, 515, 150, 20, 10); } }
/// <summary> /// 雷达图--学科均衡性分析 /// </summary> /// <param name="strDataName">分类管理名字</param> /// <param name="data1">元数据</param> /// <param name="data2">比较数据</param> /// <returns></returns> public string ChartTypeRadarLine(string strDataName, string data1,string data2) { var mychartSpace = new ChartSpace(); var mychart = mychartSpace.Charts.Add(0); mychart.Type = ChartChartTypeEnum.chChartTypeRadarLineFilled; mychart.HasTitle = false; var chart1 = mychart.SeriesCollection.Add(0); chart1.SetData(DimCategories, DataLiteral, strDataName); chart1.SetData(DimValues, DataLiteral, data2); chart1.Interior.Color = Color.Red; var chart2 = mychart.SeriesCollection.Add(0); chart2.SetData(DimValues, DataLiteral, data1); chart2.Interior.Color = Color.Blue; var image = UrlPath("雷达"); mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
//---------------------------------------------------------------------------- protected void DrawSlide_Ten() { slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, "BOOKINGS BYREGIONS"); DataSet ds = getSlide_Nine(); if (ds.Tables[0].Rows.Count == 0) return; string[] titile = { meeting.getyear().Substring(2, 2) + " A", meeting.getnextyear().Substring(2, 2) + " F" }; float[] x = { 60, 380 }; for (int i = 0; i < 2; i++) { ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypePie3D; objChart.HasTitle = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; objChart.Title.Caption = "All Products " + titile[i]; objChart.HasLegend = true; string dimValues = ""; double total = 0; for (int j = 0; j < regionNumber; j++) { var num = ds.Tables[0].Rows[0][j + 1]; if (num is DBNull) total += 0; else total += (double)num; } for (int j = 0; j < regionNumber; j++) { var num = ds.Tables[0].Rows[0][j + 1]; if (num is DBNull) dimValues += "0\t"; else dimValues += string.Format("{0:F}", 100 * (double)num / total) + "\t"; } dimValues = dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(0); objChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; objChart.SeriesCollection[0].DataLabelsCollection.Add(); objChart.SeriesCollection[0].DataLabelsCollection[0].HasValue = false; objChart.SeriesCollection[0].DataLabelsCollection[0].HasPercentage = true; objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimRegionCategories); objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); objSpace.ExportPicture(picturePath, "GIF", 300, 250); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, x[i], 120, 300, 250); } }
//竖状柱状图--优势科目、弱势科目分析 public string ChartTypeColumnClustered() { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置图表类型,本例使用柱状图 mychart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; //添加图表块 mychart.SeriesCollection.Add(0); //设置图例位置为底端 mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionTop; //设置图表块的属性 //分类属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "语文\t数学\t英语\t物理\t化学\t生物"); //值属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "100\t120\t143\t170\t135\t143"); ChSeries chSeries = mychart.SeriesCollection.Add(0); chSeries.Type = ChartChartTypeEnum.chChartTypeLineMarkers; chSeries.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "100\t120\t90\t120\t110\t132"); //chSeries.Interior.SetPresetGradient(ChartGradientStyleEnum.chGradientFromCenter, // ChartGradientVariantEnum.chGradientVariantCenter,ChartPresetGradientTypeEnum.chGradientChrome); chSeries = mychart.SeriesCollection.Add(0); chSeries.Type = ChartChartTypeEnum.chChartTypeLineMarkers; chSeries.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "120\t150\t70\t150\t120\t112"); chSeries = mychart.SeriesCollection.Add(0); chSeries.Type = ChartChartTypeEnum.chChartTypeLineMarkers; chSeries.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "150\t130\t40\t150\t130\t132"); //显示百分比 //ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasPercentage = true; var image = UrlPath("柱状图"); //生成图片 mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
private void MakeLineChart(DataTable mDataTable)//string[] DataName,string[] Data,string[] Data1, string[] Data2) { //Y坐标轴 //string[] DataName = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; //string[] DataName = { "一", "二", "三", "四", "五", "六", "日" }; //第一条曲线的数据 //int[] Data = { 0, 10, 20, 100, 40, 50, 60 }; //第二条曲线的数据 //int[] Data1 = { 100, 50, 41, 86 }; //第三条曲线的数据 // int[] Data2 = { 10, 50, 100, 30, 50, 60, 200 }; string strValue1 = ""; string strValue = ""; string strValue2 = ""; string strCateory = ""; //循环取得数据并格式化为OWC10需要的格式,(加'\t') foreach (DataRow mRow in mDataTable.Rows) { strCateory += mRow[0].ToString() + '\t'; strValue += mRow[1].ToString() + '\t'; strValue1 += mRow[2].ToString() + '\t'; } //for (int i = 0; i < DataName.Length; i++) //{ // strCateory += DataName[i] + '\t'; //} //for (int i = 0; i < Data.Length; i++) //{ // strValue += Data[i] + '\t'; //} //for (int i = 0; i < Data1.Length; i++) //{ // strValue1 += Data1[i] + '\t'; //} //for (int i = 0; i < Data2.Length; i++) //{ // strValue2 += Data2[i] + '\t'; //} ChartSpace mySpace = new ChartSpace(); ChChart myChart = mySpace.Charts.Add(0); myChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; myChart.HasLegend = true; myChart.HasTitle = true; myChart.Title.Caption = "交易曲线图"; myChart.Axes[0].HasTitle = true; myChart.Axes[0].Title.Caption = mDataTable.Columns[0].Caption; myChart.Axes[1].HasTitle = true; myChart.Axes[1].Title.Caption = "总额"; myChart.SeriesCollection.Add(0); //myChart. myChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, mDataTable.Columns[1].Caption); myChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strCateory); ChDataLabels myLabels1 = myChart.SeriesCollection[0].DataLabelsCollection.Add(); myLabels1.NumberFormat = "0.00"; myLabels1.HasValue = true; myChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue); if (strValue1 != "") { myChart.SeriesCollection.Add(1); myChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, mDataTable.Columns[2].Caption); myChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue1); ChDataLabels myLabels2 = myChart.SeriesCollection[1].DataLabelsCollection.Add(); myLabels2.NumberFormat = "0.00"; myLabels2.HasValue = true; } //if (strValue2 !="") //{ // myChart.SeriesCollection.Add(2); // myChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue2); // ChDataLabels myLabels3 = myChart.SeriesCollection[2].DataLabelsCollection.Add(); // myLabels3.NumberFormat = "0.00"; // myLabels3.HasValue = true; //} System.IO.File.Delete(@"C:\temp.gif"); mySpace.ExportPicture(@"C:\temp.gif", "GIF", this.Width, this.Height); Image image = Image.FromFile(@"C:\temp.gif"); pictureBox1.Image = image; pictureBox1.Size = image.Size; pictureBox1.Visible = true; }
//竖状柱状图+折线图 public string ChartTypeColumnClustered4(string strDataName,Dictionary<string,string> list , string caption) { var mychartSpace = new ChartSpace(); ChChart mychart = mychartSpace.Charts.Add(0); mychart.HasLegend = true; mychart.HasTitle = true; mychart.Title.Caption = caption; mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom; mychart.Axes[1].NumberFormat = "0%"; var dicList = new string[list.Keys.Count]; var i = 0; foreach (var dic in list) { dicList[i] = dic.Value; i++; } var type = dicList[0].Split('\t'); var clearList=""; for (var j = 0; j < type.Length-1; j++) { clearList += 1 - Convert.ToSingle(type[j]) + "\t"; } clearList += 1 - Convert.ToSingle(type[type.Length - 1]); var chart1 = mychart.SeriesCollection.Add(0); chart1.Type = ChartChartTypeEnum.chChartTypeColumnStacked100; chart1.SetData(DimCategories, DataLiteral, strDataName); chart1.SetData(DimValues, DataLiteral, clearList); chart1.Interior.Color = ChartColorIndexEnum.chColorNone; chart1.Border.Color = ChartColorIndexEnum.chColorNone; chart1.Caption = ""; var chart3 = mychart.SeriesCollection.Add(0); chart3.SetData(DimValues, DataLiteral, dicList[0]); chart3.Caption = "你的得分率"; var chart2 = mychart.SeriesCollection.Add(0); chart2.Type = ChartChartTypeEnum.chChartTypeLineStackedMarkers; chart2.SetData(DimValues, DataLiteral, dicList[1]); chart2.Caption = "同层面得分率"; var image = UrlPath("柱状折线图"); mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
public string PieChart(Pie pie, Page page) { //创建X坐标的值 string[] str = pie.DataNames; //创建Y坐标的值,表示销售额 double[] count = pie.DataValues; string strDataName = ""; string strData = ""; //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); mychartSpace.Border.Color = pie.ChartBorderColor; //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置每块饼的数据 for (int i = 0; i < count.Length; i++) { strDataName += str[i].ToString() + "\t"; strData += count[i].ToString() + "\t"; } strDataName = strDataName.Substring(0, strDataName.Length - 1); strData = strData.Substring(0, strData.Length - 1); //设置图表类型,本例使用饼 switch (pie.PicChartType) { case PieType.Pie: mychart.Type = ChartChartTypeEnum.chChartTypePie; break; case PieType.Pie3D: mychart.Type = ChartChartTypeEnum.chChartTypePie3D; break; case PieType.Exploded: mychart.Type = ChartChartTypeEnum.chChartTypePieExploded; break; case PieType.Exploded3D: mychart.Type = ChartChartTypeEnum.chChartTypePieExploded3D; break; default: mychart.Type = ChartChartTypeEnum.chChartTypePie; break; } //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = pie.ChartTitle; mychart.Title.Font.Size = pie.ChartTitleSize; mychart.Title.Font.Bold = pie.ChartTitleBold; mychart.Title.Font.Color = pie.ChartTitleColor; switch (pie.LegendPosition) { case LegendPosition.Top: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionTop; break; case LegendPosition.Bottom: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom; break; case LegendPosition.Left: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; break; case LegendPosition.Right: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; default: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; } mychart.Legend.Interior.Color = pie.LegendBgColor; mychart.Legend.Font.Bold = pie.LegenFontBold; mychart.Legend.Font.Size = pie.LegendFontSize; mychart.Legend.Border.Color = pie.LegendBorderColor; //添加图表块 mychart.SeriesCollection.Add(0); //设置图表块的属性 //分类属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strDataName); //mychart.SeriesCollection[0].Interior.Color = "#C1DBEE"; //mychart.SeriesCollection[1].Interior.Color = "#D1A00B"; //值属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strData); for (int j = 0; j < mychart.SeriesCollection[0].Points.Count; j++) { mychart.SeriesCollection[0].Points[j].Border.Color = pie.SeriesCollectionBorderColor; if (pie.DataColor != null) { mychart.SeriesCollection[0].Points[j].Interior.Color = pie.DataColor[j].ToString(); } } //显示百分比 ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); mytb.HasPercentage = pie.HasPercentage; mytb.Font.Color = pie.DataFontColor; mytb.Font.Size = pie.DataFontSize; mytb.HasValue = true; //生成图片 //劉宏哲修改,先删除文件再创建文件。解决第一次生成图片以后,再次生成报错。时间:2010-04-21 9:44。 string path = page.MapPath(".") + @"\" + pie.PicName + ".gif"; if (File.Exists(path)) { File.Delete(path); } mychartSpace.ExportPicture(path, "gif", pie.ChartWidth, pie.ChartHeight); //返回图片路径 return(pie.PicName + ".gif" + "?temp=" + System.DateTime.Now.Ticks.ToString() + ""); }
//----------------------------------------------------------------------- protected void DrawSlide_TwentyNine() { for (int i = 0; i < segmentNumber; i++) { DataSet ds_operation = getOperation(alSegment[i].ToString()); if (ds_operation.Tables.Count > 0 && ds_operation.Tables[0].Rows.Count > 0) { int operationIndex = 0; int slideNum = ds_operation.Tables[0].Rows.Count / 2 + (ds_operation.Tables[0].Rows.Count % 2 == 0 ? 0 : 1); for (int j = 0; j < slideNum; j++) { float x = 60; slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, meeting.getyear().Trim() + " & " + meeting.getnextyear().Trim() + " " + alSegment[i].ToString().Trim() + " PRODUCTS SALES"); int chartNum = 2; if ((j == slideNum - 1) && (ds_operation.Tables[0].Rows.Count % 2 != 0)) chartNum = 1; for (int k = 0; k < chartNum; k++) { DataSet ds = getSlide_TwentyNine(alSegment[i].ToString(), ds_operation.Tables[0].Rows[operationIndex][0].ToString()); DataSet dsAdd = getSlide_TwentyNineAdd(alSegment[i].ToString(), ds_operation.Tables[0].Rows[operationIndex][0].ToString()); if (ds != null) { ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeArea; objChart.HasTitle = true; objChart.HasLegend = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; objChart.Title.Caption = ds_operation.Tables[0].Rows[operationIndex][1].ToString(); operationIndex++; string dimCategories = ""; for (int l = 1; l < ds.Tables[0].Columns.Count; l++) { dimCategories += ds.Tables[0].Columns[l].ColumnName + "\t"; } dimCategories = dimCategories.Substring(0, dimCategories.Length - 1); for (int m = 0; m < ds.Tables[0].Rows.Count; m++) { string dimValues = ""; for (int n = 1; n < ds.Tables[0].Columns.Count; n++) { var num1 = ds.Tables[0].Rows[m][n]; if (dsAdd != null) { var num2 = dsAdd.Tables[0].Rows[m][n]; dimValues += (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString() + "\t"; } else dimValues += (num1 is DBNull ? "0\t" : num1.ToString() + "\t"); } dimValues = dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(0); objChart.SeriesCollection[0].Caption = ds.Tables[0].Rows[m][0].ToString(); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCategories); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); } objSpace.ExportPicture(picturePath, "GIF", 260, 200); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, x, 80, 260, 200); int rowCount = ds.Tables[0].Rows.Count; int columnCount = ds.Tables[0].Columns.Count; PowerPoint.Shape shape = slide.Shapes.AddTable(rowCount + 1, columnCount, 385, 300, 700, 200); for (int s = 0; s < rowCount + 1; s++) { for (int t = 0; t < columnCount; t++) { PowerPoint.TextFrame textF = shape.Table.Cell(s + 1, t + 1).Shape.TextFrame; textF.HorizontalAnchor = Microsoft.Office.Core.MsoHorizontalAnchor.msoAnchorCenter; PowerPoint.TextRange textR = textF.TextRange; textR.Font.Bold = MsoTriState.msoTrue; textR.Font.Size = 4; if (s == 0) { textR.Text = ds.Tables[0].Columns[t].ColumnName; } else { if (t == 0) { var num1 = ds.Tables[0].Rows[s - 1][t]; textR.Text = num1.ToString(); } else { var num1 = ds.Tables[0].Rows[s - 1][t]; if (dsAdd != null) { var num2 = dsAdd.Tables[0].Rows[s - 1][t]; textR.Text = (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString(); } else { textR.Text = Convert.ToDouble(num1 is DBNull ? 0 : num1).ToString(); } } } } } shape.Export(picturePath, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatGIF, 480, 240, Microsoft.Office.Interop.PowerPoint.PpExportMode.ppScaleXY); shape.Delete(); InsertPicture(slide, picturePath, x + 20, 340, 240, 120); x = 380; x = 380; } } } } } }
public void MainTemplete() { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置图表类型 mychart.Type = ChartChartTypeEnum.chChartTypeLineStackedMarkers; //旋转 //mychart.Rotation = 360; //mychart.Inclination = 10; //背景颜色 //mychart.PlotArea.Interior.Color = "red"; //底色 //mychart.PlotArea.Floor.Interior.Color = "green"; //mychart.Overlap = 50; //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; //设置图例位置 mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; //添加图表块 //分类属性 const ChartDimensionsEnum category = ChartDimensionsEnum.chDimValues; const int dataSources = (int)ChartSpecialDataSourcesEnum.chDataLiteral; var chart1 = mychart.SeriesCollection.Add(0); //X柱 chart1.SetData(ChartDimensionsEnum.chDimCategories, dataSources, "T1\tT2\tT3\tT4\tT5\tT6\tT7\tT8\t本次考试"); //分类名字 chart1.SetData(ChartDimensionsEnum.chDimSeriesNames, dataSources, "总分"); //赋值 chart1.SetData(category, dataSources, "-0.1\t-0.8\t-0.1\t0.3\t0.3\t1\t1.5\t1.1\t-0.6"); //chart1.Ungroup(true); //chart1.Interior.Color = "red"; //ChSeries chSeries = mychart.SeriesCollection.Add(0); //chSeries.Type = ChartChartTypeEnum.chChartTypeSmoothLine; //ChAxis chAxis = mychart.Axes.Add(chSeries.Scalings[ChartDimensionsEnum.chDimValues]); //chAxis.Position = ChartAxisPositionEnum.chAxisPositionRight; var chart2 = mychart.SeriesCollection.Add(0); chart2.SetData(category, dataSources, "-0.2\t-0.7\t-0.1\t0.3\t0.4\t1\t1.1\t1.1\t-0.6"); chart2.Ungroup(true); chart2.Caption = "平均分"; // chart2.Line.Color = ChartColorIndexEnum.chColorNone;//不要线 var chart3 = mychart.SeriesCollection.Add(0); chart3.SetData(ChartDimensionsEnum.chDimSeriesNames, dataSources, "二次平均"); chart3.SetData(category, dataSources, "-0.3\t-0.6\t-1.3\t0.3\t0.5\t1\t1.1\t1.1\t-0.6"); chart3.Ungroup(true); var chart4 = mychart.SeriesCollection.Add(0); chart4.SetData(ChartDimensionsEnum.chDimSeriesNames, dataSources, "三次平均"); chart4.SetData(category, dataSources, "-0.4\t-0.5\t-1.0\t0.3\t0.6\t1\t-1.1\t1.1\t-0.6"); chart4.Ungroup(true); //mychart.Axes[0].HasMajorGridlines = true;//竖着的线 //mychart.Axes[0].HasMinorGridlines = false;//竖着的线 //mychart.Axes[0].HasTickLabels = false;//X坐标的值 //mychart.Axes[1]X坐标 //给定标题 //objChart.HasTitle = true; //objChart.Title.Caption = topTitle; //objChart.Title.Font.Size = 18; //objChart.Title.Font.Bold = true; //objChart.Title.Font.Color = "#ff3300";//标题颜色 //objChart.Interior.Color = "#003399"; //objChart.PlotArea.BackWall.Interior.Color = "black"; //objChart.PlotArea.Interior.Color = "green"; ////objChart.PlotArea.Interior.Color = "black";//图表区域背景颜色 //objChart.PlotArea.Floor.Interior.Color = "black"; ////给定x,y轴的图示说明 //objChart.Axes[0].HasTitle = true; //objChart.Axes[0].Title.Caption = xTitle; //objChart.Axes[0].Title.Font.Size = 15; //objChart.Axes[0].Title.Font.Bold = true; //objChart.Axes[0].Title.Font.Color = "#ff3300"; //objChart.Axes[0].MajorGridlines.Line.Color = "white"; //objChart.Axes[0].Font.Size = 14; //objChart.Axes[0].Font.Color = "#ff3300";//X轴刻度颜色 //objChart.Axes[0].Font.Bold = true; //objChart.Axes[0].MajorTickMarks = OWC11.ChartTickMarkEnum.chTickMarkAutomatic; //趋势图 //var trend = chart2.Trendlines.Add(); //trend.Type = ChartTrendlineTypeEnum.chTrendlineTypeLinear; //trend.Caption = "ds"; //trend.IsDisplayingEquation = false; //trend.IsDisplayingRSquared = false; //Explosion:返回或设置指定饼图或圆环图扇面的分离程度值。有效范围为 0 到 1000。分离程度值等于图表半径的百分比 //objChart.SeriesCollection[0].Points[2].Explosion = 45; //将柱状图的第一条柱设置为红色 //Point:代表图中的一部分,比如柱图的一条柱,饼图的一个扇区 //Interior:表示指定对象的内部 //mychart.SeriesCollection[0].Points[0].Interior.Color = "Red"; //给第一个扇区设置自定义背景图片 //objChart.SeriesCollection[0].Points[0].Interior.SetTextured("E:\\Projects\\DotNetNuke\\images\\add.gif", ChartTextureFormatEnum.chTile,1,ChartTexturePlacementEnum.chFrontSides); //给第二个扇区设置从中心向四周辐射的单色渐变 //objChart.SeriesCollection[0].Points[1].Interior.SetOneColorGradient(ChartGradientStyleEnum.chGradientFromCenter,ChartGradientVariantEnum.chGradientVariantStart,0.3,"Blue"); //给第三个扇区设置倾斜双色渐变 //objChart.SeriesCollection[0].Points[2].Interior.SetTwoColorGradient(ChartGradientStyleEnum.chGradientDiagonalDown,ChartGradientVariantEnum.chGradientVariantCenter,"Green","Red"); //给第四个扇区设置OWC预设的纹理,并设置纹理的背景色为淡绿色,前景色为红色 //OWC提供了很多纹理,这是其中一种 //具体的纹理样式可以参看帮助中的ChartPatternTypeEnum枚举 // objChart.SeriesCollection[0].Points[3].Interior.SetPatterned(ChartPatternTypeEnum.chPatternDiagonalBrick,"Red","LightGreen"); //给第五个扇区设置OWC预设的倾斜, //OWC提供了许多种的倾斜,这是其中一种 //具体的倾斜可以参看帮助中的ChartPresetGradientTypeEnum枚举 // objChart.SeriesCollection[0].Points[4].Interior.SetPresetGradient(ChartGradientStyleEnum.chGradientDiagonalUp,ChartGradientVariantEnum.chGradientVariantEdges,ChartPresetGradientTypeEnum.chGradientGoldII); // objChart.SeriesCollection[0].Trendlines.Add(); // 是否显示函数 // objChart.SeriesCollection[0].Trendlines[0].IsDisplayingEquation = true; // 是否显示平方 // objChart.SeriesCollection[0].Trendlines[0].IsDisplayingRSquared = true; // 设置趋势线标题 // objChart.SeriesCollection[0].Trendlines[0].Caption = "TrendLine"; // 设置趋势线类型, // OWC提供了4种趋势线类型,具体可参看帮助的ChartTrendlineTypeEnum枚举 // objChart.SeriesCollection[0].Trendlines[0].Type = OWC11.ChartTrendlineTypeEnum.chTrendlineTypePolynomial; //var trend = chart2.Trendlines.Add(); //trend.Type = ChartTrendlineTypeEnum.chTrendlineTypeLinear; //trend.Caption = "ds"; //trend.IsDisplayingEquation = false; //trend.IsDisplayingRSquared = false; ////主次网格线不显示 //chChart.Axes[1].HasMinorGridlines = false; //chChart.Axes[1].HasMajorGridlines = false; ////设定Y轴格式 //chChart.Axes[1].NumberFormat = "0%"; ////去掉线 //chChart.SeriesCollection[3].Line.Color = ChartColorIndexEnum.chColorNone; ////标记形状 //chChart.SeriesCollection[3].Marker.Style = ChartMarkerStyleEnum.chMarkerStyleDiamond; //显示百分比 //ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasPercentage = true; //ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasBubbleSize = false; //显示百分比 //mytb.HasPercentage = true; //显示值 //mytb.HasValue = true; var image = UrlPath("折线图"); //生成图片 mychartSpace.ExportPicture(image, "GIF", 800, 200); }
//折线图-- public string ChartTypeLineStackedMarkers(string strDataName, Dictionary<string, string> list, string caption) { var mychartSpace = new ChartSpace(); var mychart = mychartSpace.Charts.Add(0); mychart.Type = ChartChartTypeEnum.chChartTypeLineStackedMarkers; //mychart.Axes[1].Line.Color = ChartColorIndexEnum.chColorNone; mychart.HasLegend = true; mychart.HasTitle = true; mychart.Title.Caption = caption; mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; string[] color = {"Red", "Blue", "Green", "Yellow"}; var i = 0; foreach (var dic in list) { var keys = mychart.SeriesCollection.Add(0); keys.SetData(DimValues, DataLiteral, dic.Value); //keys.DataLabelsCollection.Add().HasValue = true; keys.Caption = dic.Key; //keys.Marker.Style = ChartMarkerStyleEnum.chMarkerStyleCircle; keys.Line.Color = color[i]; keys.Ungroup(true); i++; } mychart.SeriesCollection[0].SetData(DimCategories, DataLiteral, strDataName); var image = UrlPath("折线图"); mychartSpace.ExportPicture(image, "GIF", 800, 200); return image; }
public string PieChart(Pie pie, Page page) { //创建X坐标的值 string[] str = pie.DataNames; //创建Y坐标的值,表示销售额 double[] count = pie.DataValues; string strDataName = ""; string strData = ""; //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); mychartSpace.Border.Color = pie.ChartBorderColor; //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置每块饼的数据 for (int i = 0; i < count.Length; i++) { strDataName += str[i].ToString() + "\t"; strData += count[i].ToString() + "\t"; } strDataName = strDataName.Substring(0, strDataName.Length - 1); strData = strData.Substring(0, strData.Length - 1); //设置图表类型,本例使用饼 switch (pie.PicChartType) { case PieType.Pie: mychart.Type = ChartChartTypeEnum.chChartTypePie; break; case PieType.Pie3D: mychart.Type = ChartChartTypeEnum.chChartTypePie3D; break; case PieType.Exploded: mychart.Type = ChartChartTypeEnum.chChartTypePieExploded; break; case PieType.Exploded3D: mychart.Type = ChartChartTypeEnum.chChartTypePieExploded3D; break; default: mychart.Type = ChartChartTypeEnum.chChartTypePie; break; } //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = pie.ChartTitle; mychart.Title.Font.Size = pie.ChartTitleSize; mychart.Title.Font.Bold = pie.ChartTitleBold; mychart.Title.Font.Color = pie.ChartTitleColor; switch (pie.LegendPosition) { case LegendPosition.Top: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionTop; break; case LegendPosition.Bottom: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom; break; case LegendPosition.Left: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; break; case LegendPosition.Right: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; default: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; } mychart.Legend.Interior.Color = pie.LegendBgColor; mychart.Legend.Font.Bold = pie.LegenFontBold; mychart.Legend.Font.Size = pie.LegendFontSize; mychart.Legend.Border.Color = pie.LegendBorderColor; //添加图表块 mychart.SeriesCollection.Add(0); //设置图表块的属性 //分类属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strDataName); //mychart.SeriesCollection[0].Interior.Color = "#C1DBEE"; //mychart.SeriesCollection[1].Interior.Color = "#D1A00B"; //值属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strData); for (int j = 0; j < mychart.SeriesCollection[0].Points.Count; j++) { mychart.SeriesCollection[0].Points[j].Border.Color = pie.SeriesCollectionBorderColor; if (pie.DataColor != null) { mychart.SeriesCollection[0].Points[j].Interior.Color = pie.DataColor[j].ToString(); } } //显示百分比 ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); mytb.HasPercentage = pie.HasPercentage; mytb.Font.Color = pie.DataFontColor; mytb.Font.Size = pie.DataFontSize; mytb.HasValue = true; //生成图片 //劉宏哲修改,先删除文件再创建文件。解决第一次生成图片以后,再次生成报错。时间:2010-04-21 9:44。 string path = page.MapPath(".") + @"\" + pie.PicName + ".gif"; if (File.Exists(path)) { File.Delete(path); } mychartSpace.ExportPicture(path, "gif", pie.ChartWidth, pie.ChartHeight); //返回图片路径 return pie.PicName + ".gif" + "?temp=" + System.DateTime.Now.Ticks.ToString() + ""; }
public string ColumnChart(Column column, Page page) { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); mychartSpace.Border.Color = column.ChartBorderColor; //设置图表类型,本例使用柱形 mychart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = column.ChartTitle; mychart.Title.Font.Size = column.ChartTitleSize; mychart.Title.Font.Bold = column.ChartTitleBold; switch (column.LegendPosition) { case LegendPosition.Top: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionTop; break; case LegendPosition.Bottom: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom; break; case LegendPosition.Left: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; break; case LegendPosition.Right: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; default: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; } mychart.Legend.Interior.Color = column.LegendBgColor; mychart.Legend.Font.Size = column.LegendFontSize; mychart.Legend.Border.Color = column.LegendBorderColor; //设置x,y坐标 mychart.Axes[1].HasTitle = column.ShowYAxes; mychart.Axes[1].Title.Caption = column.YAxesCaption; mychart.Axes[1].Title.Font.Size = 10; mychart.Axes[0].HasTitle = column.ShowXAxes; mychart.Axes[0].Title.Caption = column.XAxesCaption; mychart.Axes[0].Font.Name = "宋体"; mychart.Axes[0].Font.Size = 10; string seriesName = ""; string strValue = ""; string category = ""; for (int i = 0; i < column.SeriesNames.Length; i++) { seriesName = column.SeriesNames[i]; strValue = ""; category = ""; for (int j = 0; j < column.Values[i].Length; j++) { strValue += column.Values[i][j].ToString() + "\t"; } for (int j = 0; j < column.Categorys.Length; j++) { category += column.Categorys[j] + "\t"; } mychart.SeriesCollection.Add(i); mychart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, seriesName); mychart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, category); mychart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue); mychart.SeriesCollection[i].DataLabelsCollection.Add(); mychart.SeriesCollection[i].DataLabelsCollection[0].HasValue = true; //mychart.SeriesCollection.Add(1); //if (column.DataColor != null) //{ // mychart.SeriesCollection[i].Points[0].Interior.Color = column.DataColor[i].ToString(); //} } //生成图片 //劉宏哲修改,先删除文件再创建文件。解决第一次生成图片以后,再次生成报错。时间:2010-04-21 9:44。 string path = page.MapPath(".") + @"\" + column.PicName + ".gif"; if (File.Exists(path)) { File.Delete(path); } mychartSpace.ExportPicture(path, "gif", column.ChartWidth, column.ChartHeight); //返回图片路径 return column.PicName + ".gif" + "?temp=" + System.DateTime.Now.Ticks.ToString() + ""; }
//---------------------------------------------------------- protected void DrawSlide_Thirteen() { slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, "ET HP " + meeting.getyear() + " Actual, " + meeting.getnextyear() + " Forecast"); DataSet ds = getSlide_eleven(); if (ds.Tables[0].Rows.Count == 0) return; DataSet ds1 = getSlide_Telwe(); if (ds.Tables[0].Rows.Count == 0) return; DataSet ds2 = getSlide_TelweAdd(); if (ds.Tables[0].Rows.Count == 0) return; //int x = 0; int y = 0; for (int i = 0; i < 2; i++) { ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; objChart.HasTitle = true; objChart.Title.Font.Size = 12; objChart.HasLegend = true; objChart.Title.Font.Bold = true; string dimValues = ""; switch (i) { case 0: y = 80; objChart.Title.Caption = "Bookings"; for (int j = 4; j > 0; j--) { dimValues = ""; for (int k = 0; k < ds.Tables[0].Rows.Count - 1; k++) { var num = ds.Tables[0].Rows[k][j]; dimValues += String.Format("{0:F}", (num is DBNull ? 0 : (double)num)) + "\t"; } dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(0); objChart.SeriesCollection[0].Caption = ds.Tables[0].Columns[j].ColumnName; objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimSegmentCategories); objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); } int rowCount = ds.Tables[0].Rows.Count; int columnCount = ds.Tables[0].Columns.Count; PowerPoint.Shape shape = slide.Shapes.AddTable(rowCount + 1, columnCount, 385, 300, 700, 200); for (int s = 0; s < rowCount + 1; s++) { for (int t = 0; t < columnCount; t++) { PowerPoint.TextFrame textF = shape.Table.Cell(s + 1, t + 1).Shape.TextFrame; PowerPoint.TextRange textR = textF.TextRange; textR.Font.Bold = MsoTriState.msoFalse; textR.Font.Size = 4; if (s == 0) { textR.Text = ds.Tables[0].Columns[t].ColumnName; } else { if (t == 0) { var num1 = ds.Tables[0].Rows[s - 1][t]; textR.Text = num1.ToString(); } else { var num = ds.Tables[0].Rows[s - 1][t]; textR.Text = Convert.ToDouble(num is DBNull ? 0 : num).ToString(); } } } } shape.Export(picturePath, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatGIF, 400, 200, Microsoft.Office.Interop.PowerPoint.PpExportMode.ppScaleXY); shape.Delete(); InsertPicture(slide, picturePath, 400, 120, 240, 120); InsertText(slide, "Bookings", 490, 80, 60, 35, 12); break; case 1: objChart.Title.Caption = "Sales"; y = 300; for (int j = 4; j > 0; j--) { dimValues = ""; for (int k = 0; k < ds1.Tables[0].Rows.Count - 1; k++) { var num1 = ds1.Tables[0].Rows[k][j]; var num2 = ds2.Tables[0].Rows[k][j]; dimValues += (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString() + "\t"; } dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(0); objChart.SeriesCollection[0].Caption = ds1.Tables[0].Columns[j].ColumnName; objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimSegmentCategories); objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); } int rowCount1 = ds1.Tables[0].Rows.Count; int columnCount1 = ds1.Tables[0].Columns.Count; PowerPoint.Shape shape1 = slide.Shapes.AddTable(rowCount1 + 1, columnCount1, 385, 300, 700, 200); for (int s = 0; s < rowCount1 + 1; s++) { for (int t = 0; t < columnCount1; t++) { PowerPoint.TextFrame textF = shape1.Table.Cell(s + 1, t + 1).Shape.TextFrame; PowerPoint.TextRange textR = textF.TextRange; textR.Font.Bold = MsoTriState.msoFalse; textR.Font.Size = 4; if (s == 0) { textR.Text = ds1.Tables[0].Columns[t].ColumnName; } else { if (t == 0) { var num1 = ds1.Tables[0].Rows[s - 1][t]; textR.Text = num1.ToString(); } else { var num1 = ds1.Tables[0].Rows[s - 1][t]; var num2 = ds2.Tables[0].Rows[s - 1][t]; textR.Text = (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString(); } } } } shape1.Export(picturePath, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatGIF, 400, 200, Microsoft.Office.Interop.PowerPoint.PpExportMode.ppScaleXY); shape1.Delete(); InsertPicture(slide, picturePath, 400, 335, 240, 120); InsertText(slide, "Sales", 490, 295, 60, 35, 12); break; } objSpace.ExportPicture(picturePath, "GIF", 260, 200); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, 60, y, 260, 200); } }
//横状柱状图 public string ChartTypeBarClustered() { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; mychart.Axes[1].NumberFormat = "0%";//显示% //设置图例位置为底端 mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom; //添加图表块 var chart1 = mychart.SeriesCollection.Add(0); //设置图表块的属性 chart1.Type = ChartChartTypeEnum.chChartTypeBarClustered; //分类属性 chart1.SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "解答题\t填空题\t选择题"); //值属性 chart1.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "0.7\t0.26\t0.48"); //chart1.Interior.Color = Color.Red; //var chart2 = mychart.SeriesCollection.Add(0); //chart2.Type = ChartChartTypeEnum.chChartTypeScatterLine; //chart2.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "0.82\t0.14\t0.27"); //var chart2 = mychart.SeriesCollection.Add(0); //////chart2.Line.Color = ChartColorIndexEnum.chColorNone; //chart2.Type = ChartChartTypeEnum.chChartTypeLineMarkers; //chart1.SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "0.82\t0.14\t0.27"); //chart2.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "解答题\t填空题\t选择题"); //chart2.Marker.Style = ChartMarkerStyleEnum.chMarkerStyleStar; //chart2.Caption = ""; ////chart2.Interior.Color = Color.Red; //var trend = chart2.Trendlines.Add(); //trend.Type = ChartTrendlineTypeEnum.chTrendlineTypeLinear; //trend.Caption = "ds"; //trend.IsDisplayingEquation = false; //trend.IsDisplayingRSquared = false; ////主次网格线不显示 //chChart.Axes[1].HasMinorGridlines = false; //chChart.Axes[1].HasMajorGridlines = false; ////设定Y轴格式 //chChart.Axes[1].NumberFormat = "0%"; ////去掉线 //chChart.SeriesCollection[3].Line.Color = ChartColorIndexEnum.chColorNone; ////标记形状 //chChart.SeriesCollection[3].Marker.Style = ChartMarkerStyleEnum.chMarkerStyleDiamond; //显示百分比 //ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasPercentage = true; var name = "横坐标柱状图" + DateTime.Now.Ticks; var image = UrlPath(name); //生成图片 mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
//------------------------------------------------------------ //protected void DrawSlide_TwentySeven(PowerPoint.Slide slide) //{ // UniformLayout(slide, "2009 & 2010 FCST Booking by Sales Organization"); //} //------------------------------------------------------------ protected void DrawSlide_TwentySeven() { PowerPoint.Slide slide; int num = segmentNumber / 2; int count = 0; for (int i = 0; i < segmentNumber / 2 + (segmentNumber % 2 == 0 ? 0 : 1); i++) { bool slideIsNull = true; int chartNum = 2; if (i == num) chartNum = segmentNumber / 2; slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); slide = slides[slideIndex]; UniformLayout(slide, "2010 Bookings by Sales Organization 2010 vs 2011"); for (int j = 0; j < chartNum; j++) { DataSet ds = getSlide_TwentySeven(alSegment[count].ToString()); DataSet dsAdd = getSlide_TwentySevenAdd(alSegment[count].ToString()); count++; float x = 80; //float x1 = 100; if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { slideIsNull = false; ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.HasTitle = true; objChart.HasLegend = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; objChart.Title.Caption = alSegment[count - 1].ToString(); objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; for (int k = 0; k < ds.Tables[0].Rows.Count; k++) { string dimCategories = ""; string dimValues = ""; for (int m = 0; m < alSalesOrg.Count; m++) { dimCategories += alSalesOrg[m].ToString() + "\t"; } for (int s = 1; s < ds.Tables[0].Columns.Count; s++) { var num1 = ds.Tables[0].Rows[k][s]; var num2 = dsAdd.Tables[0].Rows[k][s]; dimValues += Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2) + "\t"; } dimCategories = dimCategories.Substring(0, dimCategories.Length - 1); dimValues = dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(k); objChart.SeriesCollection[k].Caption = ds.Tables[0].Rows[k][0].ToString(); objSpace.Charts[0].SeriesCollection[k].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCategories); objSpace.Charts[0].SeriesCollection[k].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); } int w = ds.Tables[0].Columns.Count * 40; int h = ds.Tables[0].Columns.Count * 18; objSpace.ExportPicture(picturePath, "GIF", w, 160); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, x, 80, w, 180); int rowCount = ds.Tables[0].Rows.Count; int columnCount = ds.Tables[0].Columns.Count; PowerPoint.Shape shape = slide.Shapes.AddTable(rowCount + 1, columnCount, 385, 300, 700, 200); for (int s = 0; s < rowCount + 1; s++) { for (int t = 0; t < columnCount; t++) { PowerPoint.TextFrame textF = shape.Table.Cell(s + 1, t + 1).Shape.TextFrame; textF.HorizontalAnchor = Microsoft.Office.Core.MsoHorizontalAnchor.msoAnchorCenter; PowerPoint.TextRange textR = textF.TextRange; textR.Font.Bold = MsoTriState.msoTrue; textR.Font.Size = 4; if (s == 0) { textR.Text = ds.Tables[0].Columns[t].ColumnName; } else { if (t == 0) { var num1 = ds.Tables[0].Rows[s - 1][t]; textR.Text = num1.ToString(); } else { var num1 = ds.Tables[0].Rows[s - 1][t]; var num2 = dsAdd.Tables[0].Rows[s - 1][t]; textR.Text = (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString(); } } } } shape.Export(picturePath, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatGIF, w, h, Microsoft.Office.Interop.PowerPoint.PpExportMode.ppScaleXY); shape.Delete(); InsertPicture(slide, picturePath, x + 20, 340, w - 40, 120); x = 380; } } if (slideIsNull == true) --slideIndex; } }
//竖状柱状图--各分数段人数比例分析 public string ChartTypeColumnClustered4() { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置图表类型,本例使用柱状图 mychart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; //添加图表块 mychart.SeriesCollection.Add(0); //设置图表块的属性 //分类属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "1\t2\t3\t4\t5\t6\t7"); //值属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "200\t100\t343\t270"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "200\t100\t343\t270"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "200\t100\t343\t270"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "200\t100\t343\t270"); //ChSeries chSeries = mychart.SeriesCollection.Add(0); //chSeries.Type = ChartChartTypeEnum.chChartTypeSmoothLine; //chSeries.Ungroup(true); //ChAxis chAxis = mychart.Axes.Add(chSeries.Scalings[ChartDimensionsEnum.chDimValues]); //chAxis.Position = ChartAxisPositionEnum.chAxisPositionRight; ////给定系列的值 //chSeries.SetData // (ChartDimensionsEnum.chDimValues, // (int)ChartSpecialDataSourcesEnum.chDataLiteral, "0\t21\t0\t0\t"); //chSeries = mychart.SeriesCollection.Add(0); //chSeries.Type = ChartChartTypeEnum.chChartTypeLineMarkers; //chSeries.Ungroup(true); //chAxis = mychart.Axes.Add(chSeries.Scalings[ChartDimensionsEnum.chDimValues]); //chAxis.Position = ChartAxisPositionEnum.chAxisPositionRight; ////给定系列的值 //chSeries.SetData // (ChartDimensionsEnum.chDimValues, // (int)ChartSpecialDataSourcesEnum.chDataLiteral, "100\t220\t90\t150\t323\t434"); //显示百分比 //ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasPercentage = true; var image = UrlPath("柱状图"); //生成图片 mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
//-------------------------------------------------------------------------- protected void DrawSlide_eleven() { PowerPoint.Slide slide = slides[++slideIndex]; UniformLayout(slide, "ET HP " + meeting.getyear() + " Actual," + meeting.getnextyear() + "Forecast"); DataSet ds = getSlide_eleven(); if (ds.Tables[0].Rows.Count == 0) return; float x = 0; float y = 0; string dimValues = ""; for (int i = 0; i < 3; i++) { switch (i) { case 0: x = 55; y = 80; break; case 1: x = 485; y = 80; break; case 2: x = 55; y = 300; break; } ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypePie3D; objChart.HasTitle = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; objChart.Title.Caption = "Booking " + ds.Tables[0].Columns[i + 1].ColumnName; objChart.HasLegend = true; objChart.SeriesCollection.Add(0); objChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; for (int k = 0; k < ds.Tables[0].Rows.Count; k++) { var num = ds.Tables[0].Rows[k][i + 1]; double num1 = (num is DBNull ? 0 : (double)num); if (alSegment.Count < ds.Tables[0].Rows.Count - 1) dimValues += String.Format("{0:F}", (100 * num1 / (double)ds.Tables[0].Rows[alSegment.Count][i + 1])) + "\t"; else return; } dimValues = dimValues.Substring(0, dimValues.Length - 1); salesGap = dimValues; objChart.SeriesCollection[0].DataLabelsCollection.Add(); objChart.SeriesCollection[0].DataLabelsCollection[0].HasValue = false; objChart.SeriesCollection[0].DataLabelsCollection[0].HasPercentage = true; objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimSegmentCategories); objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); dimValues = ""; objSpace.ExportPicture(picturePath, "GIF", 180, 180); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, x, y, 180, 180); } ChartSpace objSpace1 = new ChartSpace(); ChChart objChart1 = objSpace1.Charts.Add(0); objChart1.Type = ChartChartTypeEnum.chChartTypeColumnStacked; objChart1.HasTitle = true; objChart1.HasLegend = true; objChart1.Title.Caption = "Bookings " + meeting.getnextyear().Substring(2, 2).Trim() + " Gap"; for (int k = 0; k < segmentNumber; k++) { string dimValues1 = ""; for (int l = 0; l < segmentNumber; l++) { if (l == k) { var num = ds.Tables[0].Rows[k][4]; dimValues1 += (num is DBNull ? 0 : (double)num).ToString() + "\t"; } else dimValues1 += "0\t"; } dimValues1 = dimValues1.Substring(0, dimValues1.Length - 1); objChart1.SeriesCollection.Add(k); objChart1.SeriesCollection[k].Caption = alSegment[k].ToString(); objSpace1.Charts[0].SeriesCollection[k].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimSegmentCategories); objSpace1.Charts[0].SeriesCollection[k].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues1); } objSpace1.ExportPicture(picturePath, "GIF", 180, 180); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, 485, 300, 180, 180); int rowCount = ds.Tables[0].Rows.Count; int columnCount = ds.Tables[0].Columns.Count; PowerPoint.Shape shape = slide.Shapes.AddTable(rowCount + 1, columnCount, 385, 300, 700, 200); shape.Fill.BackColor.SchemeColor = PowerPoint.PpColorSchemeIndex.ppBackground; for (int s = 0; s < rowCount + 1; s++) { for (int t = 0; t < columnCount; t++) { PowerPoint.TextFrame textF = shape.Table.Cell(s + 1, t + 1).Shape.TextFrame; PowerPoint.TextRange textR = textF.TextRange; textR.Font.Bold = MsoTriState.msoFalse; textR.Font.Size = 4; if (s == 0) { textR.Text = ds.Tables[0].Columns[t].ColumnName; } else { var num = ds.Tables[0].Rows[s - 1][t]; textR.Text = (num is DBNull ? 0 : num).ToString(); } } } shape.Export(picturePath, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatGIF, 400, 200, Microsoft.Office.Interop.PowerPoint.PpExportMode.ppScaleXY); shape.Delete(); InsertPicture(slide, picturePath, 240, 230, 240, 120); }
//竖状柱状图--上线率分析 public string ChartTypeColumnClustered5() { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置图表类型,本例使用柱状图 mychart.Type = ChartChartTypeEnum.chChartTypeColumnStacked; //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; //添加图表块 mychart.SeriesCollection.Add(0); //设置图表块的属性 const ChartDimensionsEnum category = ChartDimensionsEnum.chDimValues; const int dataSources = (int)ChartSpecialDataSourcesEnum.chDataLiteral; //分类属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, dataSources, "本科线"); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, dataSources, "总分\t语文\t数学\t英语\t物理\t化学\t生物"); //值属性 mychart.SeriesCollection[0].SetData(category, dataSources, "6%\t6%\t4%\t4%\t0%\t8%\t2%"); mychart.SeriesCollection[0].Ungroup(true); var chart2 = mychart.SeriesCollection.Add(0); chart2.SetData(ChartDimensionsEnum.chDimSeriesNames, dataSources, "一本线"); chart2.SetData(category, dataSources, "16%\t66%\t45%\t4%\t3%\t8%\t2%"); //chart2.Ungroup(true); //显示值 ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); mytb.HasValue = true; mytb = mychart.SeriesCollection[1].DataLabelsCollection.Add(); mytb.HasValue = true; var image = UrlPath("柱状图"); //生成图片 mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
//-------------------------------------------------------------------------- protected void DrawSlide_Fourteen() { slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, "HP " + meeting.getpreyear().Trim() + "-" + meeting.getnextyear().Substring(2, 2) + " Bookings"); InsertText(slide, "5 Top Countries CL & IN ", 205, 50, 280, 35, 24); string dimCategories = meeting.getpreyear().Substring(2, 2) + "\t" + meeting.getyear().Substring(2, 2) + "\t" + meeting.getnextyear().Substring(2, 2); DataSet ds = getSlide_Fourteen(); if (ds == null) return; if (ds.Tables[0].Rows.Count == 0) return; int x = 22; string[] color = { "goldenrod", "deepskyblue", "forestgreen", "maroon", "yellow", "blue" }; double[] total = { 0, 0, 0 }; for (int i = 0; i < 6; i++) { string dimValues = ""; ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeAreaStacked; objChart.HasTitle = true; objChart.Title.Caption = ds.Tables[0].Columns[i + 1].ColumnName; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; if (i != 5) { for (int j = 0; j < 3; j++) { var num = ds.Tables[0].Rows[j][i + 1]; dimValues += (num is DBNull ? 0 : num).ToString() + "\t"; total[j] += (num is DBNull ? 0 : (double)num); } } else { for (int j = 0; j < 3; j++) { var num = ds.Tables[0].Rows[j][i + 1]; dimValues += ((num is DBNull ? 0 : (double)num) - total[j]).ToString() + "\t"; } } dimValues = dimValues.Substring(0, dimValues.Length - 1); objChart.Border.Color = "black"; objChart.Interior.Color = "mediumturquoise"; objChart.PlotArea.Interior.Color = "white"; objChart.SeriesCollection.Add(0); objChart.SeriesCollection[0].Interior.Color = color[i]; objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCategories); objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); objSpace.ExportPicture(picturePath, "GIF", 115, 170); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, x, 160, 115, 170); x += 113; } }
//折线图--成绩波动分析 public string ChartTypeLineStackedMarkers(string name) { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置图表类型 mychart.Type = ChartChartTypeEnum.chChartTypeLineStackedMarkers; mychart.Axes[1].Line.Color = ChartColorIndexEnum.chColorNone; //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = name; //设置图例位置 mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; //添加图表块 //分类属性 const ChartDimensionsEnum category = ChartDimensionsEnum.chDimValues; const int dataSources = (int)ChartSpecialDataSourcesEnum.chDataLiteral; var chart1 = mychart.SeriesCollection.Add(0); //X柱 chart1.SetData(ChartDimensionsEnum.chDimCategories, dataSources, "T1\tT2\tT3\tT4\tT5\tT6\tT7\tT8\t本次考试"); //分类名字 //chart1.SetData(ChartDimensionsEnum.chDimSeriesNames, dataSources, "总分"); //赋值 chart1.SetData(category, dataSources, "-0.1\t-0.8\t-0.1\t0.3\t0.3\t1\t1.5\t1.1\t-0.6"); chart1.Ungroup(true); chart1.Caption = name; var chart2 = mychart.SeriesCollection.Add(0); chart2.Caption = "平均分"; chart2.SetData(category, dataSources, "-0.2\t-0.7\t-0.1\t0.3\t0.4\t1\t1.1\t1.1\t-0.6"); chart2.Ungroup(true); var chart4 = mychart.SeriesCollection.Add(0); chart4.SetData(category, dataSources, "-0.4\t-0.5\t-1.0\t0.3\t0.6\t1\t-1.1\t1.1\t-0.6"); chart4.Ungroup(true); chart4.Caption = "三次平均"; //ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasBubbleSize = false; //显示百分比 //mytb.HasPercentage = true; var path = "折线图" + DateTime.Now.Ticks; var image = UrlPath(path); //生成图片 mychartSpace.ExportPicture(image, "GIF", 800, 200); return image; }
//--------------------------------------------------------------------------- protected void DrawSlide_Nineteen() { PowerPoint.Slide slide; for (int i = 0; i < segmentNumber; i++) { DataSet ds_operation = getOperation(alSegment[i].ToString()); if (ds_operation.Tables.Count > 0 && ds_operation.Tables[0].Rows.Count > 0) { int numOfSegment = ds_operation.Tables[0].Rows.Count / 2; int count = 0; for (int j = 0; j < numOfSegment + (ds_operation.Tables[0].Rows.Count % 2 == 0 ? 0 : 1); j++) { float x = 60; float x1 = 70; slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); slide = slides[slideIndex]; UniformLayout(slide, alSegment[i].ToString().Trim() + " Sales By Operation by Product 2011 vs 2010"); int chartNum = 2; if (j == numOfSegment) chartNum = ds_operation.Tables[0].Rows.Count % 2; bool slideIsNull = true; for (int k = 0; k < chartNum; k++) { ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; DataSet ds = getSlide_Nineteen(alSegment[i].ToString(), ds_operation.Tables[0].Rows[count][0].ToString()); DataSet dsAdd = getSlide_NineteenAdd(alSegment[i].ToString(), ds_operation.Tables[0].Rows[count][0].ToString()); objChart.HasTitle = true; objChart.HasLegend = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; objChart.Title.Caption = ds_operation.Tables[0].Rows[count][1].ToString(); count++; if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { slideIsNull = false; string dimCategories = ""; for (int l = 1; l < ds.Tables[0].Columns.Count; l++) { dimCategories += ds.Tables[0].Columns[l].ColumnName + "\t"; } dimCategories = dimCategories.Substring(0, dimCategories.Length - 1); for (int r = 0; r < ds.Tables[0].Rows.Count; r++) { string dimValues = ""; for (int n = 1; n < ds.Tables[0].Columns.Count; n++) { var num1 = ds.Tables[0].Rows[r][n]; if (dsAdd != null && dsAdd.Tables.Count > 0 && dsAdd.Tables[0].Rows.Count > 0) { var num2 = dsAdd.Tables[0].Rows[r][n]; dimValues += Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2) + "\t"; } else dimValues += Convert.ToDouble(num1 is DBNull ? 0 : num1) + "\t"; } dimValues = dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(r); objChart.SeriesCollection[r].Caption = ds.Tables[0].Rows[r][0].ToString(); objSpace.Charts[0].SeriesCollection[r].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCategories); objSpace.Charts[0].SeriesCollection[r].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); } } objSpace.ExportPicture(picturePath, "GIF", 320, 160); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, x, 80, 300, 180); int rowCount = ds.Tables[0].Rows.Count; int columnCount = ds.Tables[0].Columns.Count; PowerPoint.Shape shape = slide.Shapes.AddTable(rowCount + 1, columnCount, 385, 300, 700, 200); for (int s = 0; s < rowCount + 1; s++) { for (int t = 0; t < columnCount; t++) { PowerPoint.TextFrame textF = shape.Table.Cell(s + 1, t + 1).Shape.TextFrame; textF.HorizontalAnchor = Microsoft.Office.Core.MsoHorizontalAnchor.msoAnchorCenter; PowerPoint.TextRange textR = textF.TextRange; textR.Font.Bold = MsoTriState.msoTrue; textR.Font.Size = 4; if (s == 0) { textR.Text = ds.Tables[0].Columns[t].ColumnName; } else { if (t == 0) { var num1 = ds.Tables[0].Rows[s - 1][t]; textR.Text = num1.ToString(); } else { var num1 = ds.Tables[0].Rows[s - 1][t]; if (dsAdd != null && dsAdd.Tables.Count > 0 && dsAdd.Tables[0].Rows.Count > 0) { var num2 = dsAdd.Tables[0].Rows[s - 1][t]; textR.Text = (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString(); } else textR.Text = (Convert.ToDouble(num1 is DBNull ? 0 : num1)).ToString(); } } } } shape.Export(picturePath, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatGIF, 480, 240, Microsoft.Office.Interop.PowerPoint.PpExportMode.ppScaleXY); shape.Delete(); InsertPicture(slide, picturePath, x1, 340, 240, 120); x = 380; x1 = 410; } if (slideIsNull == true) --slideIndex; } } } }
//折线图2--成绩变化趋势分析 public string ChartTypeLineStackedMarkers2() { //创建X坐标的值,表示月份 int[] Month = { 1, 2, 3 }; //创建Y坐标的值,表示销售额 double[] Count = { 120, 240, 220 }; string strDataName = ""; string strData = ""; //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); //设置每块饼的数据 for (int i = 0; i < Count.Length - 1; i++) { strDataName += Month[i] + "\t"; strData += Count[i].ToString() + "\t"; } strDataName += Month[Count.Length - 1]; strData += Count[Count.Length - 1].ToString(); //设置图表类型,本例使用柱状图 mychart.Type = ChartChartTypeEnum.chChartTypeLineStackedMarkers; //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; //设置图例位置为底端 mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom; //添加图表块 mychart.SeriesCollection.Add(0); //设置图表块的属性 //分类属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strDataName); //值属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strData); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "200\t120\t343"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "100\t200\t143"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "300\t300\t243"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "400\t180\t303"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "230\t230\t313"); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "290\t200\t349"); //显示百分比 //ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasPercentage = true; var image = UrlPath("折线图"); //生成图片 mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
//--------------------------------------------------- protected void DrawSlide_Sixteen() { int slideNum = segmentNumber / 2 + (segmentNumber % 2 == 0 ? 0 : 1); for (int i = 0; i < slideNum; i++) { slides.Add(++slideIndex, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PowerPoint.Slide slide = slides[slideIndex]; UniformLayout(slide, meeting.getyear().Trim() + " & " + meeting.getnextyear().Trim() + " Sales Forecast by Products"); int chartNum = 2; float x = 40; float x1 = 70; if ((i == slideNum - 1) && (segmentNumber % 2 == 1)) { chartNum = 1; } DataSet[] ds = new DataSet[chartNum]; DataSet[] dsAdd = new DataSet[chartNum]; bool slideIsNull = true; for (int j = 0; j < chartNum; j++) { ds[j] = getSlide_Sixteen(alSegment[2 * i + j].ToString()); dsAdd[j] = getSlide_SixteenAdd(alSegment[2 * i + j].ToString()); if (ds[j] != null && ds[j].Tables.Count > 0 && ds[j].Tables[0].Rows.Count > 0) { slideIsNull = false; string dimCategories = ""; string dimValues = ""; ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; objChart.HasTitle = true; objChart.HasLegend = true; objChart.Title.Font.Size = 12; objChart.Title.Font.Bold = true; for (int m = 1; m < ds[j].Tables[0].Columns.Count; m++) { dimCategories += ds[j].Tables[0].Columns[m].ColumnName + "\t"; } dimCategories = dimCategories.Substring(0, dimCategories.Length - 1); for (int k = ds[j].Tables[0].Rows.Count - 1; k >= 0; k--) { dimValues = ""; for (int l = 1; l < ds[j].Tables[0].Columns.Count; l++) { var num1 = ds[j].Tables[0].Rows[k][l]; if (dsAdd[j] != null && dsAdd[j].Tables.Count > 0 && dsAdd[j].Tables[0].Rows.Count > 0) { var num2 = dsAdd[j].Tables[0].Rows[k][l]; dimValues += Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2) + "\t"; } else dimValues += Convert.ToDouble(num1 is DBNull ? 0 : num1) + "\t"; } dimValues = dimValues.Substring(0, dimValues.Length - 1); objChart.SeriesCollection.Add(0); objChart.SeriesCollection[0].Caption = ds[j].Tables[0].Rows[k][0].ToString(); objChart.Title.Caption = alSegment[2 * i + j].ToString() + " Products"; objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimCategories); objSpace.Charts[0].SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, dimValues); } objSpace.ExportPicture(picturePath, "GIF", 300, 200); picturePath = pictureFolderPath + pictureName; InsertPicture(slide, picturePath, x, 80, 300, 200); int rowCount = ds[j].Tables[0].Rows.Count; int columnCount = ds[j].Tables[0].Columns.Count; PowerPoint.Shape shape = slide.Shapes.AddTable(rowCount + 1, columnCount, 385, 300, 700, 200); for (int s = 0; s < rowCount + 1; s++) { for (int t = 0; t < columnCount; t++) { PowerPoint.TextFrame textF = shape.Table.Cell(s + 1, t + 1).Shape.TextFrame; textF.HorizontalAnchor = Microsoft.Office.Core.MsoHorizontalAnchor.msoAnchorCenter; PowerPoint.TextRange textR = textF.TextRange; textR.Font.Bold = MsoTriState.msoTrue; textR.Font.Size = 4; if (s == 0) { textR.Text = ds[j].Tables[0].Columns[t].ColumnName; } else { if (t == 0) { var num1 = ds[j].Tables[0].Rows[s - 1][t]; textR.Text = num1.ToString(); } else { var num1 = ds[j].Tables[0].Rows[s - 1][t]; if (dsAdd[j] != null && dsAdd[j].Tables.Count > 0 && dsAdd[j].Tables[0].Rows.Count > 0) { var num2 = dsAdd[j].Tables[0].Rows[s - 1][t]; textR.Text = (Convert.ToDouble(num1 is DBNull ? 0 : num1) + Convert.ToDouble(num2 is DBNull ? 0 : num2)).ToString(); } else textR.Text = (Convert.ToDouble(num1 is DBNull ? 0 : num1)).ToString(); } } } } shape.Export(picturePath, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatGIF, 480, 240, Microsoft.Office.Interop.PowerPoint.PpExportMode.ppScaleXY); shape.Delete(); InsertPicture(slide, picturePath, x1, 340, 240, 120); x1 = 410; x = 380; } } if (slideIsNull == true) --slideIndex; } }
//饼图 public string ChartTypePie() { //创建X坐标的值,表示月份 int[] Month = { 1, 2, 3, 4, 5, 6 }; //创建Y坐标的值,表示销售额 double[] Count = { 120, 240, 220, 343, 32, 54 }; string strDataName = ""; string strData = ""; //创建图表空间 var mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 var mychart = mychartSpace.Charts.Add(0); //设置每块饼的数据 for (int i = 0; i < Count.Length - 1; i++) { strDataName += Month[i] + "\t"; strData += Count[i].ToString() + "\t"; } strDataName += Month[Count.Length - 1]; strData += Count[Count.Length - 1].ToString(); //设置图表类型,本例使用饼图 mychart.Type = ChartChartTypeEnum.chChartTypePie; //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; //添加图表块 mychart.SeriesCollection.Add(0); //分类属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strDataName); //值属性 mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strData); mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "200\t100\t343\t270\t235\t343"); //给第一个扇区设置自定义背景图片 mychart.SeriesCollection[0].Points[0].Interior.SetTextured("E:\\Projects\\DotNetNuke\\images\\add.gif", ChartTextureFormatEnum.chTile, 1, ChartTexturePlacementEnum.chFrontSides); //给第二个扇区设置从中心向四周辐射的单色渐变 mychart.SeriesCollection[0].Points[1].Interior.SetOneColorGradient(ChartGradientStyleEnum.chGradientFromCenter, ChartGradientVariantEnum.chGradientVariantStart, 0.3, "Blue"); //给第三个扇区设置倾斜双色渐变 mychart.SeriesCollection[0].Points[2].Interior.SetTwoColorGradient(ChartGradientStyleEnum.chGradientDiagonalDown, ChartGradientVariantEnum.chGradientVariantCenter, "Green", "Red"); //给第四个扇区设置OWC预设的纹理,并设置纹理的背景色为淡绿色,前景色为红色 //OWC提供了很多纹理,这是其中一种 //具体的纹理样式可以参看帮助中的ChartPatternTypeEnum枚举 mychart.SeriesCollection[0].Points[3].Interior.SetPatterned(ChartPatternTypeEnum.chPatternDiagonalBrick, "Red", "LightGreen"); //给第五个扇区设置OWC预设的倾斜, //OWC提供了许多种的倾斜,这是其中一种 //具体的倾斜可以参看帮助中的ChartPresetGradientTypeEnum枚举 mychart.SeriesCollection[0].Points[4].Interior.SetPresetGradient(ChartGradientStyleEnum.chGradientDiagonalUp, ChartGradientVariantEnum.chGradientVariantEdges, ChartPresetGradientTypeEnum.chGradientGoldII); //显示百分比 ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); mytb.HasPercentage = true; var image = UrlPath("饼图"); //生成图片 mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
/*Draw HistoGram */ protected void DrawHistoGram() { ChartSpace objSpace = new ChartSpace(); ChChart objChart = objSpace.Charts.Add(0); objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; objChart.HasTitle = true; objChart.Title.Font.Size = 12; objChart.Title.Caption = GetTitle(5); objChart.Title.Font.Bold = true; objChart.SeriesCollection.Add(0); objChart.SeriesCollection.Add(1); objChart.HasLegend = true; objChart.SeriesCollection[0].Caption = year.Substring(2, 2) + " A"; objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +Convert.ToInt32(ChartSpecialDataSourcesEnum.chDataLiteral), year.Substring(2, 2) + " A"); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, GetDimCategories(3)); objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, GetDimValues(5)); objChart.SeriesCollection[1].Caption = nextyear.Substring(2, 2) + " F"; objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimSeriesNames, +Convert.ToInt32(ChartSpecialDataSourcesEnum.chDataLiteral), nextyear.Substring(2, 2) + " F"); objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, GetDimCategories(3)); objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, GetDimValues(6)); Random ro = new Random(); int a = ro.Next(); dateI = a.ToString(); string fileName = "pchart8" + dateI + ".gif"; string filePath = Server.MapPath("~"); filePath += "\\ChartImages\\" + fileName; objSpace.ExportPicture(filePath, "GIF", 250, 200); Image8.ImageUrl = filePath.ToString(); Image8.ImageUrl = "~/ChartImages/" + fileName; Image8.Visible = true; }
/// <summary> /// 雷达图--学科均衡性分析 /// </summary> /// <param name="strDataName">分类管理名字</param> /// <param name="data1">元数据</param> /// <param name="data2">比较数据</param> /// <returns></returns> public string ChartTypeRadarLine(string strDataName, string data1, string data2) { //创建图表空间 var mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 var mychart = mychartSpace.Charts.Add(0); //设置图表类型,本例使用雷达图 mychart.Type = ChartChartTypeEnum.chChartTypeRadarLineFilled; //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = "test"; //添加图表块 var chart1 = mychart.SeriesCollection.Add(0); //分类属性 chart1.SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strDataName); //值属性 chart1.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, data1); chart1.Interior.Color = "red"; mychart.SeriesCollection.Add(0); mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, data2); //显示百分比 ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add(); //mytb.HasPercentage = true; var image = UrlPath("雷达"); //生成图片 mychartSpace.ExportPicture(image, "GIF", 400, 300); return image; }
public static Image Generador_Grafico(System.Web.UI.WebControls.Image imagen, string nombreGrafico, TipoGraficos isEnum, string lgEjeX, string lgEjeY, params string[] strEntrada) { bool errorConfiguracion = false; bool ejes = false; int cantidadSeries = 0; //ChartSpaceClass objetoGraficoOffice = new ChartSpaceClass(); ChartSpace objetoGraficoOffice = new ChartSpace(); objetoGraficoOffice.DataSourceType = ChartDataSourceTypeEnum.chDataSourceTypeSpreadsheet; objetoGraficoOffice.HasChartSpaceTitle = true; objetoGraficoOffice.ChartSpaceTitle.Caption = nombreGrafico.ToUpper(); objetoGraficoOffice.ChartSpaceTitle.Font.set_Name("Tahoma"); objetoGraficoOffice.ChartSpaceTitle.Font.set_Size(12); objetoGraficoOffice.ChartSpaceTitle.Font.set_Bold(true); WCChart mapa = objetoGraficoOffice.Charts.Add(0); WCAxis Ejes; mapa.HasLegend = true; mapa.HasTitle = false; if (isEnum == TipoGraficos.PIE) { mapa.Type = ChartChartTypeEnum.chChartTypePie; mapa.SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "Elementos"); //revisamos cual es la serie y cuales son los datos //serie , A\tB\tC //datos , 1\t2\t3 for (int i = 0; i < strEntrada.Length; i++) { string[] separador = strEntrada[i].Split(','); if (separador[0].ToLower().Trim() == "serie") { mapa.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, separador[1]); } if (separador[0].ToLower().Trim() == "datos") { mapa.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, separador[1]); WCDataLabels dlValues = mapa.SeriesCollection[0].DataLabelsCollection.Add(); dlValues.HasPercentage = true; dlValues.HasValue = false; } } } if (isEnum == TipoGraficos.COLUMNAS || isEnum == TipoGraficos.LINEAS || isEnum == TipoGraficos.BARRAS || isEnum == TipoGraficos.AREA) { if (isEnum == TipoGraficos.COLUMNAS) { mapa.Type = ChartChartTypeEnum.chChartTypeColumnClustered; } if (isEnum == TipoGraficos.LINEAS) { mapa.Type = ChartChartTypeEnum.chChartTypeLineStacked; } if (isEnum == TipoGraficos.BARRAS) { mapa.Type = ChartChartTypeEnum.chChartTypeBarClustered; } if (isEnum == TipoGraficos.AREA) { mapa.Type = ChartChartTypeEnum.chChartTypeAreaStacked; } //serie,n,nombre serie //categoria,n,A\tB\tC //valores,n,1\t2\t3 ejes = true; for (int i = 0; i < strEntrada.Length; i++) { string[] separador = strEntrada[i].Split(','); if ((separador[0].ToLower().Trim() == "serie") && !errorConfiguracion) { //Buscamos las categorias y valores asociados a esta serie int indiceCategoria = BuscarIndice("categoria", separador[1].Trim(), strEntrada); int indiceValor = BuscarIndice("valores", separador[1].Trim(), strEntrada); if (indiceCategoria == -1 || indiceValor == -1) { errorConfiguracion = true; } else { string[] sepCategoria = strEntrada[indiceCategoria].Split(','); string[] sepValor = strEntrada[indiceValor].Split(','); mapa.SeriesCollection.Add(cantidadSeries); mapa.SeriesCollection[cantidadSeries].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, separador[2].Trim()); mapa.SeriesCollection[cantidadSeries].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, sepCategoria[2].Trim()); mapa.SeriesCollection[cantidadSeries].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, sepValor[2].Trim()); cantidadSeries += 1; } } } } if (isEnum == TipoGraficos.XY) { mapa.Type = ChartChartTypeEnum.chChartTypeScatterLine; //serie,n,nombreSerie //valores,n,X,1\t2\t3 //valores,n,Y,2\t4\t7 ejes = true; for (int i = 0; i < strEntrada.Length; i++) { string[] separador = strEntrada[i].Split(','); if ((separador[0].ToLower().Trim() == "serie") && !errorConfiguracion) { int indiceEjeX = BuscarIndice("valores", separador[1].Trim(), "X", strEntrada); int indiceEjeY = BuscarIndice("valores", separador[1].Trim(), "Y", strEntrada); if (indiceEjeY == -1 || indiceEjeX == -1) { errorConfiguracion = true; } else { string[] sepEjeX = strEntrada[indiceEjeX].Split(','); string[] sepEjeY = strEntrada[indiceEjeY].Split(','); mapa.SeriesCollection.Add(cantidadSeries); mapa.SeriesCollection[cantidadSeries].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, separador[2].Trim()); mapa.SeriesCollection[cantidadSeries].SetData(ChartDimensionsEnum.chDimXValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, sepEjeX[3].Trim()); mapa.SeriesCollection[cantidadSeries].SetData(ChartDimensionsEnum.chDimYValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, sepEjeY[3].Trim()); cantidadSeries += 1; } } } } if (ejes) { //Eje x Ejes = mapa.Axes[(int)ChartAxisPositionEnum.chAxisPositionBottom]; Ejes.HasTitle = true; Ejes.Title.Caption = lgEjeX; Ejes.Title.Font.set_Name("Tahoma"); Ejes.Title.Font.set_Size(8); Ejes.Title.Font.set_Bold(true); //Eje Y Ejes = mapa.Axes[(int)ChartAxisPositionEnum.chAxisPositionLeft]; Ejes.HasTitle = true; Ejes.Title.Caption = lgEjeY; Ejes.Title.Font.set_Name("Tahoma"); Ejes.Title.Font.set_Size(8); Ejes.Title.Font.set_Bold(true); } if (!errorConfiguracion) { try { objetoGraficoOffice.ExportPicture(strAbsolutePath, "gif", 500, 400); } catch (Exception e) { exceptions += "<br>error:" + e.ToString(); } imagen.ImageUrl = ConfigurationManager.AppSettings["PathToGraphics"] + "esttemp.gif"; } else { exceptions += "<br>error: Error de configuracion de series, categorias y valores"; } return(imagen); }
public string ColumnChart(Column column, Page page) { //创建图表空间 ChartSpace mychartSpace = new ChartSpace(); //在图表空间内添加一个图表对象 ChChart mychart = mychartSpace.Charts.Add(0); mychartSpace.Border.Color = column.ChartBorderColor; //设置图表类型,本例使用柱形 mychart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; //设置图表的一些属性 //是否需要图例 mychart.HasLegend = true; //是否需要主题 mychart.HasTitle = true; //主题内容 mychart.Title.Caption = column.ChartTitle; mychart.Title.Font.Size = column.ChartTitleSize; mychart.Title.Font.Bold = column.ChartTitleBold; switch (column.LegendPosition) { case LegendPosition.Top: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionTop; break; case LegendPosition.Bottom: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom; break; case LegendPosition.Left: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionLeft; break; case LegendPosition.Right: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; default: mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionRight; break; } mychart.Legend.Interior.Color = column.LegendBgColor; mychart.Legend.Font.Size = column.LegendFontSize; mychart.Legend.Border.Color = column.LegendBorderColor; //设置x,y坐标 mychart.Axes[1].HasTitle = column.ShowYAxes; mychart.Axes[1].Title.Caption = column.YAxesCaption; mychart.Axes[1].Title.Font.Size = 10; mychart.Axes[0].HasTitle = column.ShowXAxes; mychart.Axes[0].Title.Caption = column.XAxesCaption; mychart.Axes[0].Font.Name = "宋体"; mychart.Axes[0].Font.Size = 10; string seriesName = ""; string strValue = ""; string category = ""; for (int i = 0; i < column.SeriesNames.Length; i++) { seriesName = column.SeriesNames[i]; strValue = ""; category = ""; for (int j = 0; j < column.Values[i].Length; j++) { strValue += column.Values[i][j].ToString() + "\t"; } for (int j = 0; j < column.Categorys.Length; j++) { category += column.Categorys[j] + "\t"; } mychart.SeriesCollection.Add(i); mychart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, seriesName); mychart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, category); mychart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue); mychart.SeriesCollection[i].DataLabelsCollection.Add(); mychart.SeriesCollection[i].DataLabelsCollection[0].HasValue = true; //mychart.SeriesCollection.Add(1); //if (column.DataColor != null) //{ // mychart.SeriesCollection[i].Points[0].Interior.Color = column.DataColor[i].ToString(); //} } //生成图片 //劉宏哲修改,先删除文件再创建文件。解决第一次生成图片以后,再次生成报错。时间:2010-04-21 9:44。 string path = page.MapPath(".") + @"\" + column.PicName + ".gif"; if (File.Exists(path)) { File.Delete(path); } mychartSpace.ExportPicture(path, "gif", column.ChartWidth, column.ChartHeight); //返回图片路径 return(column.PicName + ".gif" + "?temp=" + System.DateTime.Now.Ticks.ToString() + ""); }