gpt4 book ai didi

c# - 从 C# API 将 excel 图表中轴的下限和上限设置为数据集的最小值/最大值

转载 作者:太空狗 更新时间:2023-10-30 01:22:32 24 4
gpt4 key购买 nike

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

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

示例(明显的差距) enter image description here

希望它有意义。

谢谢

最佳答案

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

在这里,我清除页面上的所有图表并创建一个新图表(_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 小时。不要忘记 (double) 转换,以防万一您使用整数。

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;

关于c# - 从 C# API 将 excel 图表中轴的下限和上限设置为数据集的最小值/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com