2013-02-08 28 views
5

में बनाया गया है इसलिए मैं इसे थोड़ी देर के लिए समझने की कोशिश कर रहा हूं लेकिन कहीं भी नहीं लग रहा है। मैं सी # का उपयोग कर एक्सेल स्प्रेडशीट बना रहा हूं। मेरी स्प्रेडशीट में एक चार्ट है। मैं एक्स-एक्सिस लेबल को बदलने के अलावा चार्ट के साथ सब कुछ करने में सक्षम हूं। मैंने बस इतना कुछ करने की कोशिश की है जो मुझे मिल सकती है लेकिन कुछ भी काम नहीं करता है।एक्सेल चार्ट पर एक्सिस लेबल बदलना सी #

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 है .... और इसी तरह। –