2013-02-08 115 views
5

所以我一直试图弄清楚一段时间,但似乎无法得到任何地方。我使用C#创建Excel电子表格。我的电子表格包含一个图表。除了更改X轴标签之外,我可以用图表完成所有工作。我已经试过了我能找到的所有东西,但没有任何效果。在C#中创建的Excel图表上更改轴标签#

Excel.ChartObjects xlChart = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
Excel.ChartObject myChart = (Excel.ChartObject)xlChart.Add(1420, 660, 320, 180); 
Excel.Chart chartPage = myChart.Chart; 
chartPage.ChartType = Excel.XlChartType.xlXYScatterLines; 
chartPage.HasTitle = true; 
chartPage.ChartTitle.Text = "Title Text"; 
chartPage.HasLegend = false; 

var yAxis = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary); 
yAxis.HasTitle = true; 
yAxis.AxisTitle.Text = "Y-Axis Title text"; 
yAxis.MaximumScale = 20; 
yAxis.AxisTitle.Orientation = Excel.XlOrientation.xlUpward; 

Excel.Range Data_Range = xlWorkSheet.get_Range("A10", "C10");//Data to be plotted in chart 
Excel.Range XVal_Range = xlWorkSheet.get_Range("A1", "C1");//Catagory Names I want on X-Axis as range 
var x_labels = new List<string>() { "Val1", "Val2", "Val3" }; //Catagory Names I want on X-Axis as text array 

Excel.SeriesCollection oSeriesCollection = (Excel.SeriesCollection)myChart.Chart.SeriesCollection(misValue); 
Excel.Series Data = oSeriesCollection.NewSeries(); 
Data.Values = Data_Range; 
Data.Name = "Plot Data"; 

Excel.Axis valueAxis = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary); 
/* 
Methods I've tried with no luck: 
1) Data.XValues = XVal_Range; 
2) Data.XValues = x_labels.ToArray(); 
3) valueAxis.CategoryNames = x_labels.ToArray(); 
4) valueAxis.CategoryNames = XVal_Range; 
*/ 
每次它只是使用默认数值显示时间

...我在亏损

回答

9

行,所以我想通了这个问题...你不能改变X轴上散点图类型图。我改变了图的类型为Excel.XlChartType.xlLineMarkers;,它工作正常。

这里就是整个片段:

Excel.ChartObjects xlChart = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
Excel.ChartObject myChart = (Excel.ChartObject)xlChart.Add(1420, 660, 320, 180); 
Excel.Chart chartPage = myChart.Chart; 
chartPage.ChartType = Excel.XlChartType.xlLineMarkers; 
chartPage.HasTitle = true; 
chartPage.ChartTitle.Text = "Title Text"; 
chartPage.HasLegend = false; 

var yAxis = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary); 
yAxis.HasTitle = true; 
yAxis.AxisTitle.Text = "Y-Axis Title text"; 
yAxis.MaximumScale = 20; 
yAxis.AxisTitle.Orientation = Excel.XlOrientation.xlUpward; 

Excel.Range Data_Range = xlWorkSheet.get_Range("A10", "C10");//Data to be plotted in chart 
Excel.Range XVal_Range = xlWorkSheet.get_Range("A1", "C1");//Catagory Names I want on X-Axis as range 

Excel.SeriesCollection oSeriesCollection = (Excel.SeriesCollection)myChart.Chart.SeriesCollection(misValue); 
Excel.Series Data = oSeriesCollection.NewSeries(); 
Data.Values = Data_Range; 
Data.Name = "Plot Data"; 

Excel.Axis xAxis = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary); 
xAxis.CategoryNames = XVal_Range; 
+0

它为我工作。你能告诉我如何改变水平轴**的值吗? 因为现在它只是1,2,3,4,5 ....等等。 – 2017-01-03 09:01:30