在C#中使用非相邻列中的数据创buildExcel图表

我需要使用两个不相邻列的两个范围来创build一个图表,并在代码中定义哪个范围将采用X轴和Y轴。

例如:对于M3:M15K3:K15这两个范围,我需要X轴值为K3K15 ,Y轴值为M3M15

我有一个代码从两个相邻的列创build图表:

 string start_chart_values = "M3"; int stop_chart_line_calc = 1 + num_of_rows_to_copy; string stop_chart_values = "L" + stop_chart_line_calc.ToString(); double chart_location = stop_chart_line_calc * 12; Excel.Range chartRange; Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(2, chart_location, 300, 250); Excel.Chart chartPage = myChart.Chart; Excel.Axis yAxis = chartPage.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary); yAxis.ScaleType = Excel.XlScaleType.xlScaleLogarithmic; chartRange = xlWorkSheet.get_Range(start_chart_values, stop_chart_values); chartPage.SetSourceData(chartRange); chartPage.ChartType = Excel.XlChartType.xlXYScatterSmooth; chartPage.ChartWizard(Source: chartRange, Title: "Recommended Blood Pressure", CategoryTitle: "Students Age", ValueTitle: "Blood Pressure"); 

不幸的是,这个代码不够好,因为我需要能够自己select代码中的X轴和Y轴的值。

我怎样才能更改代码,以便我可以在代码中定义哪个范围将被采用到X轴和Y轴?

提前致谢

您将需要手动设置每个系列的X和Y值来完成此操作,因为图表和系列初始化方法不包含此function。 请注意,您需要确保您的初始select只包含您的Y值,因为select整个范围最终会创build多个系列。

下面是一个如何修改代码来实现这个function的例子:

 Excel.Series series = chartPage.SeriesCollection().Add(xlWorkSheet.Range["M3:M15"]); series.XValues = xlWorkSheet.Range["K3:K15"]; 

这也可以用来创build具有分割成行或列的值的图表。 例如,要创build如下所示的图表,使用跨多个列分割的X值:

具有来自2列的x值的图表

你可以使用下面的代码:

 Excel.ChartObject chartObject = sheet.ChartObjects().Add(0, 0, 500, 250); Excel.Series series = chartObject.Chart.SeriesCollection().Add(xlWorkSheet.Range["C2:C7"]); series.XValues = xlWorkSheet.Range["A2:A4,B2:B4"];