我想将某些选定列的列宽精确设置为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)
这似乎不对..
任何人都可以帮助我找出常数/单位乘以得到所需的结果。
我知道这个问题很模糊,但这就是我的全部。
如果需要,我将非常乐意提供更多细节。
此致
普拉香特
答案 0 :(得分:2)
我联系了电子表格设备以获得有关此问题的支持,这是我从他们那里得到的回复。
你好Prashanth,
IRange界面中有两个属性处理列宽:
·IRange.Width - 只读,以磅为单位返回范围的宽度。
·IRange.ColumnWidth - getter和setter - 您可以使用它来设置列宽,以字符单位表示。
如上所述,SpreadsheetGear(和Excel)中的IRange.ColumnWidth未以英寸或点等绝对单位指定。相反,它们使用“字符单元”的概念,它取决于当前工作簿使用的默认字体。更具体地说,字符单元大致是使用工作簿的“正常”样式的“0”字符的宽度(可从workbook.Styles [“Normal”]获得。给定工作簿对象的字体)。请注意,填充也会添加到单元格的宽度中,因此这是近似值。
如果您使用SpreadsheetGear生成将在Excel中查看的工作簿(反之亦然),并且您已设置并期望特定的列宽,则可能会出现其他列宽复杂情况。对于这种情况,在Excel和我们自己的WorkbookView中查看时,您可能会看到列的实际宽度略有差异。通常,当列越宽时,这变得越明显。原因是我们在.NET中用于测量文本的字体度量(来自GDI +)与Excel用于度量文本(来自本机GDI)的字体度量略有不同。由于色谱柱宽度完全取决于这些测量值,因此我们的两种环境之间会有所不同。
从底线开始,您可以编写自己的例程,使用IRange.Width / ColumnWidth,通过反复试验,近似一个1英寸宽的列(我没有示例代码来演示这个) ,但我怀疑你能够确保一个1英寸宽的柱子,并且适用于所有情况。工作簿的“默认”字体更改时,列宽将相应更改。此外,工作表的当前缩放显然会影响屏幕上列的可视宽度。
亲切的问候
答案 1 :(得分:0)
在WPF中,默认测量值是设备px而不是点数尝试* 96。
1英寸= 96px