2015-12-13 29 views
2

我需要使用兩個不相鄰列中的兩個範圍創建圖表,並在代碼中定義哪個範圍將採用X軸和Y軸。在C#中使用非相鄰列的數據創建Excel圖表

例如:兩個範圍M3:M15K3:K15我需要X軸的值是從K3K15,和Y軸的值是從M3M15

我有兩個相鄰列創建圖表代碼:

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"); 

遺憾的是這段代碼是不夠的,因爲我需要選擇自己的代碼中的X軸Y軸的價值和能力。

如何更改代碼,以便我可以在代碼中定義哪些範圍將採用X軸和Y軸?

在此先感謝

回答

0

您需要手動設置X和Y值每個系列做到這一點,如下圖和一系列初始化方法不包括此功能。請注意,您需要確保您的初始選擇只包含您的Y值,因爲選擇整個範圍最終會創建多個系列。

這裏是你可以如何修改代碼來實現這樣的一個例子:

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

這也可以被用來創建跨越列或行拆分值走勢圖。例如,創建類似下面的圖表,用X值的多個列拆分:

Chart with x-values from 2 columns

你可以使用下面的代碼:

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"]; 
相關問題