2013-02-08 12 views
5

Tak więc próbuję to rozgryźć przez chwilę, ale nie mogę nigdzie dojść. Tworzę arkusz kalkulacyjny programu Excel przy użyciu C#. Mój arkusz kalkulacyjny zawiera tabelę. Jestem w stanie zrobić wszystko za pomocą wykresu Z WYJĄTKIEM zmienić etykiety X-Axis. Próbowałem prawie wszystkiego, co mogę znaleźć, ale nic nie działa.Zmiana etykiet osi na arkuszu Excel utworzonym w 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; 
*/ 

za każdym razem po prostu wyświetla z wartościami domyślny numer ... Jestem ze stratą

Odpowiedz

9

Ok więc ja zorientowali się problem ... Nie można zmienić oś X na wykres typu Scatter. Zmieniłem typ wykresu na Excel.XlChartType.xlLineMarkers; i działało dobrze.

Oto cały fragment:

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

on pracował dla mnie. czy możesz mi powiedzieć, jak mogę zmienić wartość ** Osi poziomej **? Ponieważ obecnie jest to po prostu 1,2,3,4,5 ... i tak dalej. –

Powiązane problemy