在C#API的excel图表中设置坐标轴的下限和上限到数据集的最小/最大值

我正在使用C#Excel API生成一些报告。 但是,Excel会在数据集中的第一个轴点和最小值之间以及数据集中的最后一个轴点和最大值之间留下间隙。 我的数据集按date时间sorting。 如何强制excel将轴的下限和上限精确地设置为数据集中的最小值和最大值,以便我看不到任何间隙? 我可以在Excel中通过在Excel图表中手动设置最小/最大轴点来实现。

但有没有办法让Excel自动执行此操作,或者使用数据集从C#应用程序中设置最小/最大点?

示例(显着间隙) 在这里输入图像说明

希望这是有道理的。

谢谢

[编辑]好吧,我玩了一些,我已经想出了如何设置垂直和水平轴范围。 这与Excel 2010一起工作。

在这里,我清除页面上的所有图表,并创build一个新的(_resultsSheet是一个Excel.Worksheet):

var resultCharts = (ChartObjects)_resultsSheet.ChartObjects(); foreach (ChartObject ch in resultCharts) { ch.Delete(); } ChartObject resultChart = resultCharts.Add(150, 40, 300, 200); _resultChartPage = resultChart.Chart; 

现在设置源代码 – 我刚刚使用了预定义的固定值范围。 您可以扫描您的来源以查找实际的最小值和最大值:

 _resultChartRange = _resultsSheet.get_Range("J5", "K15"); _resultChartPage.SetSourceData(_resultChartRange); _resultChartPage.ChartType = Excel.XlChartType.xlXYScatterLines; _resultChartPage.HasLegend = false; 

现在对于垂直轴设置:

 Axis vertAxis = (Axis)resultChart.Chart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); vertAxis.HasMajorGridlines = true; // change this to whatever you wish vertAxis.HasTitle = true; vertAxis.AxisTitle.Text = "up the side"; vertAxis.MaximumScaleIsAuto = false; vertAxis.MaximumScale = 500; // you can pick this based on your input vertAxis.MinimumScaleIsAuto = false; vertAxis.MinimumScale = 5; 

现在换另一个轴。 注意这里我使用了固定的时间。 要将时间转换为轴刻度,只需使用十进制的24小时时间除以24即可。 晚上9点30分是21点30分,这是21.5小时。 不要忘记(双)铸,以防万一你使用整数。

 Axis horizAxis = resultChart.Chart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary); horizAxis.MaximumScaleIsAuto = false; horizAxis.MaximumScale = (double)21.5 / 24; // 9:30 pm horizAxis.MinimumScaleIsAuto = false; horizAxis.MinimumScale = (double)13 / 24; // 1:00 pm horizAxis.HasTitle = true; horizAxis.AxisTitle.Text = "across the bottom"; 

对那些“喜欢看”的人来说:

 _resultsSheet.Activate(); _workBook.Application.Visible = true;