Excel中磅转厘米不一致:图表高度转换结果与格式菜单值不符
图表高度磅转厘米结果与格式菜单显示不一致的原因
Hey Fredrik,
我来帮你拆解下这个问题——你计算出的7.44厘米和格式菜单里的7.62厘米有差异,核心问题出在你获取的是「绘图区(ChartArea)」的高度,而格式菜单显示的是「整个图表对象(Chart)」的高度。
具体细节:
- 你代码里的
activeChart.ChartArea.Height返回的211磅,指的是图表内部专门用来绘制数据的矩形区域高度,它不包含图表的标题、图例、上下边距以及边框的额外空间。 - 格式菜单里显示的7.62厘米,对应的是整个图表的总高度(也就是
activeChart.Height的数值),这个高度涵盖了绘图区、标题、图例、所有边距等所有部分的总和。
验证与修正:
如果想让计算结果和格式菜单匹配,只需要把获取高度的对象改成整个图表即可:
// 获取整个图表的总高度(对应格式菜单显示值) double totalChartHeightPoints = activeChart.Height; // 简化转换逻辑:1厘米对应的磅数是CentimetersToPoints(1),所以磅转厘米就是除以这个值 double totalChartHeightCm = totalChartHeightPoints / activeChart.Application.CentimetersToPoints(1);
换算一下的话,7.62厘米对应的磅数是 7.62 * 28.3464566929 ≈ 216磅,这才是activeChart.Height会返回的数值,和你之前取的ChartArea的211磅自然有差距。
小优化:
你的原始转换代码可以简化,不用写hvPoints / hvPoints(这本质就是1),直接用activeChart.Application.CentimetersToPoints(1)来代表1厘米对应的磅数,代码可读性会更高,结果完全一致。
如果你的需求本来就是获取绘图区的高度,那7.44厘米是准确的;如果需要和格式菜单的数值对应,就切换成activeChart.Height来计算就好啦。
内容的提问来源于stack exchange,提问作者Fred B
相关产品推荐
相关产品推荐

