2013-02-08 22 views
5

So habe ich versucht, dies seit einer Weile jetzt herauszufinden, aber kann nicht scheinen, irgendwo zu kommen. Ich erstelle eine Excel-Tabelle mit C#. Meine Tabelle enthält ein Diagramm. Ich bin in der Lage, alles mit dem Diagramm zu machen, außer die X-Achsenbeschriftungen zu ändern. Ich habe fast alles versucht, was ich finden kann, aber nichts funktioniert.Ändern von Achsenbeschriftungen in Excel-Diagramm erstellt in C#

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; 
*/ 

jedes Mal zeigt sie nur mit den Standard-Zahlenwerten ... Ich bin ratlos

Antwort

9

Ok, so dass ich das Problem herausgefunden ... Sie nicht die X-Achse ändern auf ein Diagramm vom Streudiagramm Ich änderte die Art des Graphen zu Excel.XlChartType.xlLineMarkers; und es funktionierte gut.

Hier ist der gesamte Code-Schnipsel:

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

Es ist für mich gearbeitet. Können Sie mir bitte sagen, wie kann ich den Wert von ** Horizontal Axis ** ändern? Weil es jetzt einfach 1,2,3,4,5 .... und so weiter ist. –

Verwandte Themen