更改C#中创build的Excel图表上的轴标签

所以我一直试图弄清楚这一点,但似乎无法得到任何地方。 我正在使用C#创build一个Excel电子表格。 我的电子表格包含一个图表。 除了更改X轴标签之外,我可以用图表做所有事情。 我已经尝试了一切,我可以find,但没有任何作品。

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

每次只显示默认的数字值…我不知所措

好,所以我想通了这个问题…你不能改变散点图types的X轴。 我把图的types改为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;