C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

【C#】グラフの各要素の色が指定したとおりに設定されない

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■82401 / inTopicNo.1)  【C#】グラフの各要素の色が指定したとおりに設定されない
  
□投稿者/ まる (5回)-(2017/01/07(Sat) 13:36:32)

分類:[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();

引用返信 編集キー/
■82403 / inTopicNo.2)  Re[1]: 【C#】グラフの各要素の色が指定したとおりに設定されない
□投稿者/ まる (7回)-(2017/01/08(Sun) 13:47:35)
No82401 (まる さん) に返信
> またしても、よく解らないことが発生したため、質問させて頂きます。
>
> 宜しくお願いします。
>
> 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();
>
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ