如何使用C#在Excel中的图表上添加多个系列

时间:2011-11-18 09:57:16

标签: c# excel charts automation series

我想添加如下图所示的图表。

Excel Chart

此图表有3个系列(黑色,红色,蓝色)。

以下是创建" one"图表上的系列......

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 个答案:

答案 0 :(得分:3)

我可以用非常简单的解决方案来解决这个问题 如果我将yRange(oRange)设置为右,“ChartWizard”方法会自动创建图形 因此,代替具有“A2:A100”的范围,“A2:A100,C2:C100”将在一个图表上生成两行(系列),并且如果数据范围包括标题(或系列标签),则“ChartWizard”将自动将系列名称放在图例中。

答案 1 :(得分:-1)

我不太熟悉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中。