有没有办法通过VB.NET以像素为单位设置Excel文档中的列宽? 我目前使用以下代码行:
Sheets(i).Columns("A:A").ColumnWidth = 3.14
另一个问题是我使用宏来记录列的宽度,并在我的代码中将上面的语句插入其中。但是当我运行代码时,列宽为3,42而不是3,14 有人能帮助我吗?
答案 0 :(得分:2)
根据此post,您可以执行计算以将excel度量单位转换为像素。
以下是该网站的摘录:
COLUMNWIDTH:一个列宽的单位等于一个字符的宽度 在普通风格。 范围( “A1”)。columnWidth时 返回8.43个字符
WIDTH:以磅为单位返回或设置对象的宽度。 范围( “A1”)。宽度 返回48分。 72点/英寸= .6666“= 64像素@ 96像素/英寸
因此...
Sub testwidth()
Sheets("sheet3").Activate
screenres = 96 '96/inch
mypoints = Sheets("sheet3").Range("A1").Width
'> returns 48 points
mychars = Sheets("sheet3").Range("A1").ColumnWidth
'> returns 8.43 chars
mypixels = (mypoints / 72) * screenres 'pixel width of column
Debug.Print mypoints, mychars, mypixels
'> returns 48 8.43 64
End Sub
列宽为48磅或8.43个字符或64个像素。
答案 1 :(得分:2)
在列宽方面,Excel不使用像素的概念。
一个列宽单位等于标准样式中一个字符的宽度,如MSDN此处所示:[https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.tools.excel.namedrange.columnwidth?redirectedfrom=MSDN&view=vsto-2017#Microsoft_Office_Tools_Excel_NamedRange_ColumnWidth][1]
希望这会有所帮助。
解决此问题的另一种方法是将像素转换为上述字符并进行设置。