在 C# 创建的 Excel 图表中更改轴标签

5

我一直在尝试解决这个问题,但似乎没有任何进展。我正在使用C#创建一个Excel电子表格,其中包含一个图表。我能够处理图表的所有内容,除了更改X轴标签。我已经尝试了所有我能找到的方法,但是都无法解决这个问题。

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

每次它只显示默认的数字值... 我很困惑。
2个回答

11

好的,所以我找到了问题的原因...你不能在散点图上更改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;

1
它对我有用。你能告诉我如何更改“水平轴”的值吗?因为现在它只是1、2、3、4、5……等等。 - Saurabh Agrawal

0

以下是如何更改X和Y轴标题的方法

    var yAxis = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlCategory,Excel.XlAxisGroup.xlPrimary);
    yAxis.HasTitle = true;
    yAxis.AxisTitle.Text = "Y Label";

    var xAxis = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary);
    xAxis.HasTitle = true;
    xAxis.AxisTitle.Text = "X Label";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接