C# 如何将wpf spreadsheetgear工作簿中的列宽精确更改为1英寸

C# 如何将wpf spreadsheetgear工作簿中的列宽精确更改为1英寸,c#,wpf,spreadsheetgear,column-width,C#,Wpf,Spreadsheetgear,Column Width,我想将某些选定列的列宽精确设置为1英寸。然而,我很难计算出SSG用来设置列宽的单位 我试过“点”,即1英寸=72点。但在这种情况下,列宽超过1英寸 double colWidth = 1; //1 inch IRange selectedRange = workBookViewControl.RangeSelection; //this has the columns needed to change the width selectedRange.ColumnWidth = colWidt

我想将某些选定列的列宽精确设置为1英寸。然而,我很难计算出SSG用来设置列宽的单位

我试过“点”,即1英寸=72点。但在这种情况下,列宽超过1英寸

double colWidth = 1; //1 inch

IRange selectedRange = workBookViewControl.RangeSelection; //this has the columns needed to change the width

selectedRange.ColumnWidth = colWidth * 72; //72 is the conversion of inches to points(pt)
这似乎不对

有谁能帮我算出常数/单位以得到期望的结果

我知道这个问题很模糊,但这就是我的全部

如果需要,我将非常乐意提供更多细节

问候,


Prashanth

在WPF中,默认测量值为设备px而非点try*96


1英寸=96px

我联系了电子表格齿轮公司寻求对这个问题的支持,这是我从他们那里得到的答复

你好,Prashanth

IRange接口中有两个属性处理列宽:

·IRange.Width–只读,返回范围的宽度(以点为单位)

·ColumnWidth–getter和setter–您可以使用它来设置列宽,以字符为单位

如上所述,电子表格设备(和Excel)中的IRange.ColumnWidth不是以绝对单位(如英寸或点)指定的。相反,它们使用“字符单位”的概念,这取决于当前工作簿使用的默认字体。更具体地说,字符单位大约是使用工作簿“正常”样式的“0”字符的宽度(可从给定工作簿对象的workbook.Styles[“Normal”].Font获得)。请注意,填充也会添加到单元格的宽度中,因此这是一个近似值

如果您使用电子表格设备生成将在Excel中查看的工作簿(反之亦然),并且您已经设置并期望特定的列宽,则可能会出现其他列宽复杂性。在这种情况下,在Excel和我们自己的WorkbookView中查看时,您可能会看到列的实际宽度略有差异。通常,列越宽,这种情况就越明显。原因是我们在.NET中用于测量文本(来自GDI+)的字体度量与Excel用于测量文本(来自本机GDI)的字体度量略有不同。由于列宽完全取决于这些测量值,因此我们的两个环境之间会存在差异

总之,您可能能够编写自己的例程,使用IRange.Width/ColumnWidth,通过反复试验,近似于1英寸宽的列(我没有示例代码来演示这一点),但我怀疑您是否能够保证在所有情况下都精确地使用1英寸宽的列。工作簿的“默认”字体更改时,列宽也会相应更改。此外,工作表的当前缩放可能会明显影响屏幕上列的可视宽度


亲切问候

嗨,肯雅拉,我想要一些特别的东西来增加列宽。在这里,如果我应用1inch=96px,那么我看到期望的结果远远超过1英寸。