将系列添加到Excel图表exception

我有一个用一些数据填充的excel文件。 我正在尝试打开第二张纸并创build一个图表。 问题是,该Series正在给我一个System.Runtime.InteropServices.COMException was caught或者如果我取消注释注释行一个No overload for method 'SeriesCollection' takes '0' arguments 。 这是我有的代码:

 Microsoft.Office.Interop.Excel.ChartObjects chartObjs = (Microsoft.Office.Interop.Excel.ChartObjects)ws.ChartObjects(Type.Missing); Microsoft.Office.Interop.Excel.ChartObject chartObj = chartObjs.Add(100, 20, 300, 300); Microsoft.Office.Interop.Excel.Chart xlChart = chartObj.Chart; Range rg1 = ws.get_Range("A1", "D" + rowcount); rg1.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; xlChart.SetSourceData(rg1, Microsoft.Office.Interop.Excel.XlRowCol.xlColumns); xlChart.ChartType = XlChartType.xlLine; xlChart.Legend.Position = XlLegendPosition.xlLegendPositionBottom; Axis axis = (Axis)xlChart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlValue, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary); axis.MaximumScaleIsAuto = false; axis.MaximumScale = 3; Axis Xaxis = (Axis)xlChart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlCategory, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary); Xaxis.TickLabels.Orientation = XlTickLabelOrientation.xlTickLabelOrientationDownward; //SeriesCollection seriesCollection = (SeriesCollection)xlChart.SeriesCollection(); Series s1 = (Series)xlChart.SeriesCollection(1); s1.Name = "Serie1"; s1.MarkerStyle = XlMarkerStyle.xlMarkerStyleCircle; //seriesCollection.NewSeries(); Series s2 = (Series)xlChart.SeriesCollection(2); s2.Name = "Serie2"; s2.MarkerStyle = XlMarkerStyle.xlMarkerStyleNone; //seriesCollection.NewSeries(); Series s3 = (Series)xlChart.SeriesCollection(3); s3.Name = "Serie3"; s3.MarkerStyle = XlMarkerStyle.xlMarkerStyleNone; 

如果我保留注释,错误说无效参数,并显示在该行:系列s2 =(系列)xlChart.SeriesCollection(2); 如果我删除了评论,我得到了第二个例外:

 SeriesCollection seriesCollection = (SeriesCollection)xlChart.SeriesCollection(); 

如果我添加1作为参数,则图表不能正确显示。 你有什么build议如何使其工作?

那些东西仍然给我噩梦。 SeriesCollection周围出现了一些奇怪的现象 – 但是我不记得它到底是什么。

尝试重新包含该行// SeriesCollection seriesCollection =(SeriesCollection)xlChart.SeriesCollection(); 并随处引用seriesCollection对象。 阿洛斯可能是,SeriesCollection的索引是零基础的,你可以试试吗?

默认情况下,当你创build一个新的图表时,它没有任何系列,所以你不能使用chartPage.SeriesCollection(1)来select它。 你需要先创build一个系列。

为了添加一个新的系列,你需要使用像这样的东西:

 SeriesCollection seriesCollection = (SeriesCollection)xlChart.SeriesCollection(); Series s1 = seriesCollection.NewSeries(); s1.Name = "Serie1"; s1.MarkerStyle = XlMarkerStyle.xlMarkerStyleCircle; Series s2 = seriesCollection.NewSeries(); s2.Name = "Serie2"; s2.MarkerStyle = XlMarkerStyle.xlMarkerStyleNone; 

您可能还需要将值添加到系列中,而不是添加到图表中,例如:

 Series ser = sc.NewSeries(); ser.XValues = _excelWorksheet.Range[YourRange]; ser.Values = _excelWorksheet.Range[YourRange];