5

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

Excel图表

此图表有 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 没有足够的帮助,我几乎找不到任何关于这个问题的教程或示例。(或者也许我不是很好地搜索它们)
如果有人给我一个解决方案,我将不胜感激。

4

2 回答 2

3

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

于 2011-11-21T02:04:44.357 回答
-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#。似乎大多数命令都是相似的,但包含在稍微不同的语法中。

于 2011-11-18T16:00:33.013 回答