繁体   English   中英

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

[英]How to reposition the X Axis label in an excel spread sheet using C#

我已经在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”); (<-模板)

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

由于x轴变为负数,因此使用此选项将“水平值”轴置于图表的中间。 现在,我可以手动移动此图,也可以使用图表模板(如我所做的那样)移动,但这并不是最好的计划。 最好的计划是以编程方式移动它,但我找不到解决方法。 我可以找到一种方法来移动“传奇”(chart.Legend),但不能移动“值”。

谢谢你的帮助。

尽管完全没有文档说明,但此命令将起作用:chart.Axes(2).CrossesAt = chart.Axes(2).MinimumScale;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM