【问题标题】:How to add multiple series on a Chart in Excel using C#如何使用 C# 在 Excel 中的图表上添加多个系列
【发布时间】:2012-01-01 02:38:29
【问题描述】:

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

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

【问题讨论】:

  • 也许这会给你一些想法stackoverflow.com/questions/1422779/…
  • 好吧,代码块上的注释说“...多个系列——这还不行”。我仍然尝试修改一些行,但无法弄清楚。 :( 还是谢谢你。

标签: c# excel charts automation series


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我对 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#。似乎大多数命令都是相似的,但包含在稍微不同的语法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多