2016-03-21 3 views
0

Ich bin ein grundlegendes Excel-Diagramm mit diesem Code zu erzeugen:Warum generiert mein Excel-Diagramm eine Legende, die nicht mit dem Tortendiagramm übereinstimmt?

object misValue = System.Reflection.Missing.Value; 
//add data 
_xlSheet.Cells[11, 11] = "PhooBar"; 
_xlSheet.Cells[11, 12] = "Student1"; 
_xlSheet.Cells[11, 13] = "Student2"; 
_xlSheet.Cells[11, 14] = "Student3"; 

_xlSheet.Cells[12, 11] = "Term1"; 
_xlSheet.Cells[12, 12] = "80"; 
_xlSheet.Cells[12, 13] = "65"; 
_xlSheet.Cells[12, 14] = "45"; 

_xlSheet.Cells[13, 11] = "Term2"; 
_xlSheet.Cells[13, 12] = "78"; 
_xlSheet.Cells[13, 13] = "72"; 
_xlSheet.Cells[13, 14] = "60"; 

_xlSheet.Cells[14, 11] = "Term3"; 
_xlSheet.Cells[14, 12] = "82"; 
_xlSheet.Cells[14, 13] = "80"; 
_xlSheet.Cells[14, 14] = "65"; 

_xlSheet.Cells[15, 11] = "Term4"; 
_xlSheet.Cells[15, 12] = "75"; 
_xlSheet.Cells[15, 13] = "82"; 
_xlSheet.Cells[15, 14] = "68"; 

Excel.Range chartRange; 

Excel.ChartObjects xlCharts = (Excel.ChartObjects)_xlSheet.ChartObjects(Type.Missing); 
Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(468, 160, 348, 268); 
Excel.Chart chartPage = myChart.Chart; 

chartRange = _xlSheet.get_Range("K11", "O15"); // K == 11, O == 15 
chartPage.SetSourceData(chartRange, misValue); 
chartPage.ChartType = Excel.XlChartType.xlPieExploded; 

Ich habe eine Frage zu here das Etikett Platzierung zu steuern.

Jetzt möchte ich wissen, warum es vier Tortenstücke sind aber fünf Punkte auf der Legende:

enter image description here

ISTM, dass die Legende des Diagramms Motor sollte die Torte entsprechen. Was ist das Problem?

+0

weil Ihre Legende 4 Artikel wird die violette die „“ one .. – BugFinder

+1

Ist es nicht, weil das sein? '_xlSheet.Cells [11, 11] =" ";' – Ian

+1

'_xlSheet.Cells [11, 11] =" ";' ändern, um 'foo' zu sagen und du wirst' foo' in deiner Legende bekommen ... –

Antwort

0

Durch den Code dieses zu ändern, die Torte und die Legende entsprechen:

object misValue = System.Reflection.Missing.Value; 
//add data 
_xlSheet.Cells[12, 11] = "Term1"; 
_xlSheet.Cells[12, 12] = "80"; 
_xlSheet.Cells[12, 13] = "65"; 
_xlSheet.Cells[12, 14] = "45"; 

_xlSheet.Cells[13, 11] = "Term2"; 
_xlSheet.Cells[13, 12] = "78"; 
_xlSheet.Cells[13, 13] = "72"; 
_xlSheet.Cells[13, 14] = "60"; 

_xlSheet.Cells[14, 11] = "Term3"; 
_xlSheet.Cells[14, 12] = "82"; 
_xlSheet.Cells[14, 13] = "80"; 
_xlSheet.Cells[14, 14] = "65"; 

_xlSheet.Cells[15, 11] = "Term4"; 
_xlSheet.Cells[15, 12] = "75"; 
_xlSheet.Cells[15, 13] = "82"; 
_xlSheet.Cells[15, 14] = "68"; 

Excel.Range chartRange; 

//return; 

Excel.ChartObjects xlCharts = (Excel.ChartObjects)_xlSheet.ChartObjects(Type.Missing); 
Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(468, 160, 348, 268); 
Excel.Chart chartPage = myChart.Chart; 

chartRange = _xlSheet.Range[_xlSheet.Cells[12, 11], _xlSheet.Cells[15, 14]]; 

Ich ging von „get_Range“, um die effizienter und einfacher zu grok „Range []“, und es ist jetzt ein 1: 1-Entsprechung zwischen den Tortenstücken und der Legende:

enter image description here

+0

Hei, du löst das. Groß! ;) – Ian

Verwandte Themen