使用c#创build多个Excel图表对象

我花了几个小时试图从我的C#应用​​程序在Excel中创build几个图表。 我试图创build多个图表对象。 有没有更好的方法来做到这一点? 我确定行“chartObject [col] =(Excel.Chart)oWB.Charts.Add(Missing.Value,Missing.Value,Missing.Value,Missing.Value);” 是我要去错的地方

此刻,当我打电话给这条线时,有时会创build最后一个图表的副本,但有时会起作用。 我根本无法理解它的逻辑。

谢谢

private void CreateCharts(Excel.Worksheet oWS, int numRows, int numCols) { Excel.Workbook oWB = (Excel.Workbook)oWS.Parent; Excel.Series oSeries; //Excel._Chart chartObject; Excel.Chart[] chartObject = new Excel.Chart[numCols]; Excel.SeriesCollection[] oSeriesCollection = new Excel.SeriesCollection[numCols]; int length = numRows + 2; string colname; //then you can assign as much as series you want, for (int col = 0; col < numCols; col++) { //create a new chart chartObject[col] = (Excel.Chart)oWB.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); chartObject[col].ChartType = Excel.XlChartType.xlLine; oSeriesCollection[col] = (Excel.SeriesCollection)chartObject[col].SeriesCollection(); //add the actual occupancy colname = GetExcelColumnName(col * 3 + 1); oSeries = oSeriesCollection[col].NewSeries(); oSeries.Values = oWS.Range[colname + "2", colname + length]; //add the expected occupancy colname = GetExcelColumnName(col * 3 + 2); oSeries = oSeriesCollection[col].NewSeries(); oSeries.Values = oWS.Range[colname + "2", colname + length]; } } 

问题是,Excel中的Chart对象实际上是一个图表,而图表本身是一个ChartObject对象,而您使用它所处理的Shape对象来处理它。 这里有一个链接 , 另一个 链接是一个升技,以及一些来自这个MS链接的 VBA代码,它显示了一点,请注意有几种不同的方法来完成它:

 Sub AddChart_Excel() Dim objShape As Shape ' Create a chart and return a Shape object reference. ' The Shape object reference contains the chart. Set objShape = ActiveSheet.Shapes.AddChart(XlChartType.xlColumnStacked100) ' Ensure the Shape object contains a chart. If so, ' set the source data for the chart to the range A1:C3. If objShape.HasChart Then objShape.Chart.SetSourceData Source:=Range("'Sheet1'!$A$1:$C$3") End If End Sub