|
分類:[Microsoft Office 全般]
またしても、よく解らないことが発生したため、質問させて頂きます。
宜しくお願いします。
C#でEXCELシート上にグラフを描画して各要素の色を指定した色に変更 しようとしています。 グラフは2つあり、1つ目のグラフは指定した色に変更されるのですが、 2つ目のグラフが同じやり方をしているにもかかわらず、指定した色とは 違う色になってしまいます。
イメージしたとおりの色を設定するにはどのようにしたらよいでしょうか。 ※因みにグラフで表現するためのデータは、すでにグラフを作成するEXCEL シート上に設定されているものとします。 1つ目のグラフの要素は2つ、2つ目のグラフの要素は5つとします。
【開発環境】 Windows7 C# .NET 4.5
【ソースコード】 Microsoft.Office.Interop.Excel.Aprication objApp = null; Microsoft.Office.Interop.Excel.Workbooks objBooks = null; Microsoft.Office.Interop.Excel.Workbook objBook = null; Microsoft.Office.Interop.Excel.Sheets xlSheets = null; Microsoft.Office.Interop.Excel.Sheet xlSheet = null;
objApp = new Microsoft.Office.Interop.Excel.Apprication(); objApp.Visible = false; objBooks = objApp.Workbooks; objBook = objBooks.open("Test.xlsx"); xlSheets = objBook.Workbooks; xlSheet = xlSheets["Sheet1"] as Microsoft.Office.Interop.Excel.Worksheet;
Microsoft.Office.Interop.Excel.ChartObjects charts = xlSheet.ChartObjects(Type.Missing);
//一つ目のグラフの作成 Microsoft.Office.Interop.Excel.chartObj = charts.Add(10, 100, 300, 200); Microsoft.Office.Interop.Excel.chart chart = chartObj.Chart; Microsoft.Office.Interop.Excel.Range chartRange = xlSheet.get_Range("B1", "C2"); Chart.SetSourceData(chartRange, Type.Missing); chart.ChartType = Microsoft.Office.Interop.Excel.XlChartTypr.xlDoughnut; chart.PlotBy = Microsoft.Office.Interop.Excel.XLRowCol.xlColumns; chart.HasTitle = true; chart.ChartTitle.Characters.Text = "Sample"; //グラフの各要素色を設定 Microsoft.Office.Interop.Excel.Series series1 = chart.SeriesCollection(1); series1.HasDataLabels = true; Microsoft.Office.Interop.Excel.Point point1 = series1.Points(1); point1.Format.Fill.ForeColor.RGB = System.Drawing.Color.Red.ToArgb(); point1 = series1.Points(2); point1.Format.Fill.ForeColor.RGB = System.Drawing.Color.Blue.ToArgb();
//二つ目のグラフの作成 Microsoft.Office.Interop.Excel.chartObj2 = charts.Add(10, 400, 300, 200); Microsoft.Office.Interop.Excel.chart chart2 = chartObj2.Chart; Microsoft.Office.Interop.Excel.Range chartRange2 = xlSheet.get_Range("B10", "C14"); Chart2.SetSourceData(chartRange, Type.Missing); chart2.ChartType = Microsoft.Office.Interop.Excel.XlChartTypr.xlPie; chart2.PlotBy = Microsoft.Office.Interop.Excel.XLRowCol.xlColumns; chart2.HasTitle = true; chart2.ChartTitle.Characters.Text = "Sample2"; //グラフの各要素色を設定 Microsoft.Office.Interop.Excel.Series series2 = chart2.SeriesCollection(1); series2.HasDataLabels = true; Microsoft.Office.Interop.Excel.Point point2 = series2.Points(1); point2.Format.Fill.ForeColor.RGB = System.Drawing.Color.Blue.ToArgb(); point2 = series2.Points(2); point2.Format.Fill.ForeColor.RGB = System.Drawing.Color.Green.ToArgb(); point2 = series2.Points(3); point2.Format.Fill.ForeColor.RGB = System.Drawing.Color.Yellow.ToArgb(); point2 = series2.Points(4); point2.Format.Fill.ForeColor.RGB = System.Drawing.Color.Magenta.ToArgb(); point2 = series2.Points(5); point2.Format.Fill.ForeColor.RGB = System.Drawing.Color.Red.ToArgb();
objBook.save(); objBook.close(); objApp.Quit();
|