Как добавить несколько рядов на диаграмме в Excel с помощью C # - PullRequest
5 голосов
/ 18 ноября 2011

Я хотел бы добавить диаграмму, подобную следующей.

Excel Chart

Эта диаграмма имеет 3 серии (черный, красный, синий).

Ниже приведен блок кода, который создает «одну» серию на графике ...

Excel._Workbook oWorkbook = (Excel._Workbook)oSheet.Parent;
Excel._Chart oChart = (Excel._Chart)oWorkbook.Charts.Add(oSheet, Type.Missing, Type.Missing, Type.Missing);

// Y axis data
Excel.Range oRange = oSheet.get_Range(yRange, Type.Missing);

// Creates a chart
oChart.ChartWizard(oRange, chartType, 2, Excel.XlRowCol.xlColumns, Type.Missing, Type.Missing, false, title, xAxisTitle, yAxisTitle, Type.Missing);

// Sets X axis category
Excel.Series oSeries = (Excel.Series)oChart.SeriesCollection(1);    
oSeries.XValues = oSheet.get_Range(xRange, Type.Missing);
oChart.Name = chartName;

MSDN API недостаточно полезен, и я с трудом могу найти какое-либо руководство или пример по этой проблеме. (Или, может быть, я не очень хорошо их ищу)
Буду признателен, если кто-нибудь даст мне решение.

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Я мог бы решить эту проблему с очень простым решением.
Если я укажу yRange (oRange) правильно, метод «ChartWizard» автоматически создаст графики.
Таким образом, вместо диапазона с «A2: A100», «A2: A100, C2: C100» будет генерировать две линии (серии) на одном графике, а также, если диапазон данных включает заголовок (или метку серии), «ChartWizard» будет автоматически ставит название серии в легенду.

0 голосов
/ 18 ноября 2011

Я не слишком знаком с C #, но вы можете попробовать что-то вроде

Excel.Range NewRangeObject = oSheet.get_Range(SecondyRange, Type.Missing);        

oChart.NewSeries
oChart.SeriesCollection(2).Name = "New Series"
oChart.SeriesCollection(2).Value = NewRangeObject

Чтобы было ясно, я отчасти догадываюсь о том, как будет выглядеть код VBA.

Решением более высокого уровня является запись макроса в excel напрямую, настройка диаграммы точно так, как вы хотите ... затем перенос кода на C #. Кажется, что большинство команд похожи, но заключены в несколько иной snytax.

...