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

C# 如何使用C在excel电子表格中重新定位X轴标签#,c#,visual-studio-2010,excel,C#,Visual Studio 2010,Excel,我已经在MS论坛上发布了这个问题,但唯一的回答(创建宏并从VBA代码推断)没有帮助。我得到的唯一模糊的提示是使用TickLabelPosition——这显然是只有在使用VB,而我使用C时才有用的东西# 我想做的应该是世界上最简单和最普通的事情:我只想把X轴标签移到图表的底部。这有多难?嗯,我承认我在C#或Excel互操作方面都没有太多经验,但目前看来这是不可能的 我正在编写一个C#程序(VS2010),用导入的数据创建Excel电子表格。我在创建包含所有正确数据和范围的电子表格时没有问题。我不知

我已经在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;

//chart.ApplyChartTemplate(@“Chart1.crtx”);(如果要将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)。

如果您想将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)。

尽管它完全没有文档记录,但此命令可以工作:
chart.Axes(2).CrossesAt=chart.Axes(2).MinimumScale;

尽管它完全没有文档记录,但该命令仍可以工作:
chart.Axes(2).CrossesAt=chart.Axes(2).MinimumScale;

很抱歉,那些命令似乎只适用于VB。但是谢谢。那不起作用,但是这段代码起作用了:chart.Axes(2).CrossesAt=chart.Axes(2).MinimumScale;很抱歉,那些命令似乎只适用于VB。但是谢谢。那不起作用,但是这段代码起作用了:chart.Axes(2).CrossesAt=图表轴(2).MinimumScale;这有点像拼图游戏,真的。你会注意到,那页没有提到CrossSat或MinimumScale调用。但是那里还有其他同样有价值的信息。我不知道你是如何找到那个链接的,因为当我搜索时,这里是我得到的链接,我的链接中没有示例。谢谢你的f尽管如此,我还是非常感谢!哦,事实证明,虽然这个特定的命令有效,但其他命令(如onechart.Axes(2.DisplayUnit=…)都无效确实。这有点像拼图游戏。你会注意到,那页没有提到CrossSat或MinimumScale调用。但是那里还有其他同样有价值的信息。我不知道你是如何找到那个链接的,因为当我搜索时,这里是我最后得到的链接,我的链接中没有示例。谢谢你的跟进hough,我真的很感激!哦,事实证明,虽然这个特定的命令有效,但其他命令(比如这个onechart.Axes(2.DisplayUnit=…)都无效。