我有一个充满了一些数据的excel文件。我正在尝试打开第二张表并创建一个图表。问题是,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
添加为参数,则表示图表显示不正确。您对如何使其有效有任何建议吗?
答案 0 :(得分:1)
哎呀那些东西仍然让我做恶梦。 SeriesCollection周围有一些奇怪的东西 - 但我不记得究竟是什么。
尝试重新包含该行 // SeriesCollection seriesCollection =(SeriesCollection)xlChart.SeriesCollection(); 并且到处引用seriesCollection对象。 Alos可能是,SeriesCollection的索引是从零开始的,你可以试试吗?
答案 1 :(得分:0)
默认情况下,当您创建新图表时,它没有任何系列,因此您无法使用chartPage.SeriesCollection(1)进行选择。您需要先创建一个系列。
要添加新系列,您需要使用以下内容:
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];