如何使用 C# 在 Excel 电子表格中重新定位 X 轴标签

本文关键字:定位 标签 新定位 何使用 Excel 电子表格 | 更新日期: 2023-09-27 18:36:22

我已经在MS论坛上发布了这个问题,但唯一的回应(创建一个宏并从VBA代码推断)没有帮助。 我得到的唯一模糊提示是使用TickLabelPosition——这显然只有在你使用VB时才有用,而我使用的是C#。

正在尝试做的事情应该是世界上最简单和最常见的事情:我只想将 X 轴标签移动到图表的底部。 这能有多难? 好吧,我承认我在 C# 或 Excel 互操作方面都不太有经验,但目前似乎是不可能的。

我正在编写一个 C# 程序 (VS2010) 来从导入的数据创建 Excel 电子表格。 我实际使用所有正确的数据和范围创建电子表格没有问题。 我无法弄清楚的是如何移动 X 轴的标签。 它一定是我缺少的简单东西,但这个东西总是出现在零线上,因为我的值是负数,这意味着它就在图表的中间。 现在,如果我使用模板,我可以将东西放在我想要的位置,但我不想这样做。

这是一个代码截图:

         const string topLeft = "A9";
        const string bottomRight = "B18";
        const string graphTitle = "Graph Title";
        const string xAxis = "Time";
        const string yAxis = "Value";
        string chartTabName;

        var range = workSheet.get_Range(topLeft, bottomRight);    
// Add chart.
var charts = workSheet.ChartObjects() as
    Microsoft.Office.Interop.Excel.ChartObjects;

var chartObject = charts.Add(20, 20, 750, 500) as
    Microsoft.Office.Interop.Excel.ChartObject;
var chart = chartObject.Chart;
// Set chart range.
chart.SetSourceData(range);
chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlXYScatterSmooth;

//图表。ApplyChartTemplate(@"Chart1.crtx");(<- 模板)

chart.ChartWizard(Source: range,
    Title: graphTitle,
    CategoryTitle: xAxis,
    ValueTitle: yAxis);

使用此选项会将水平值轴置于图表中间,因为 x 轴变为负数。 现在我可以手动移动它,或者使用图表模板(就像我所做的那样),但这不是最好的计划。 最好的计划是以编程方式移动它,但我找不到一种方法来做到这一点。 我可以找到一种方法来移动图例(图表。图例),但不是值。

感谢您的任何帮助。

如何使用 C# 在 Excel 电子表格中重新定位 X 轴标签

虽然它完全没有文档,但这个命令将起作用:图表。轴(2).交叉点 = 图表。轴(2).最小规模;

如果要

将X轴标签移动到"低"位置,以下是VBA中的代码,可能会有所帮助:

chart.Axes(xlCategory).TickLabelPosition = xlLow

常量定义为:

Const xlCategory = 1
Const xlLow = -4134 (&HFFFFEFDA)

如果要移动整个X轴(标签和刻度),请使用VBA代码:

chart.Axes(xlValue).CrossesAt = -15

其中 -15 是 Y 范围内的最小数字。 请注意,我们实际上在这里修改了 Y 轴:

Const xlValue = 2

我意识到你要求C#代码,但这应该很容易翻译成C#(而且我没有一个Visual Studio项目来测试Excel Interop)。