【问题标题】:How to change the column width in wpf spreadsheetgear workbook to exactly 1 inch如何将 wpf 电子表格工作簿中的列宽更改为 1 英寸
【发布时间】:2014-04-18 10:36:27
【问题描述】:

我想将某些选定列的列宽精确设置为 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)

这似乎是错误的..

谁能帮我找出要乘以得到所需结果的常数/单位。

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

如果需要,我很乐意提供更多详细信息。

问候,

普拉桑特

【问题讨论】:

    标签: c# wpf spreadsheetgear column-width


    【解决方案1】:

    我联系了电子表格设备以获得有关此问题的支持,这是我从他们那里得到的答复。

    你好,普拉桑斯,

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

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

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

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

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

    底线,您也许可以编写自己的例程,使用 IRange.Width/ColumnWidth,通过反复试验,近似于 1 英寸宽的列(我没有演示此的示例代码) ,但我怀疑您是否能够准确地保证 1 英寸宽的列,并且适用于所有情况。当您的工作簿的“默认”字体更改时,您的列宽将相应更改。此外,工作表的当前缩放显然会影响屏幕上列的视觉宽度。

    亲切的问候

    【讨论】:

      【解决方案2】:

      在 WPF 中,默认测量是设备像素而不是点数尝试 * 96。

      1 英寸 = 96 像素

      【讨论】:

      • 嗨,Kenjara,我想要一些特殊的电子表格齿轮列宽。在这里,如果我应用 1inch = 96px,那么我看到所需的结果远远超过 1 英寸。
      猜你喜欢
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 2021-08-07
      相关资源
      最近更新 更多