clientHeight得到的是实际高度,clientWidth得到的却是像素宽度?如何能得到实际宽度,或者如何把像素宽度改为实际宽度?

解决方案 »

  1.   

    1、 行高的单位是“磅” ;列宽的单位是“字符”。
    行高H“磅”与X“mm”的换算: 25.4mm=1吋=72磅。
    H=X×72/25.4           
    2、 列宽L“字符”与X“mm”的换算:
    列宽每增加1个字符宽其增量是一个定值。
    如:当DPI=96时,列宽每增加一个字符宽,其增量为8像素。列宽为1个字符宽时是13像素,列宽为2个字符宽时是21像素,列宽为3个字符宽时是29像素(21-13=8,29-21=8,……);
    当DPI=120时,列宽每增加一个字符,其增量为10像素。列宽为1个字符宽时是17像素,列宽为2个字符宽时是27像素,列宽为3个字符宽时是37像素(27-17=10,37-27=10,……)。
    这里不一一列举其他DPI值时,其增量,请测试验证。
    根据此规律,列宽需按≤1个字符和>1个字符两种情况分别计算。
    利用程序分别得到列宽为一个字符宽和列宽为2个字符宽时的列宽(磅):
    Columns(1).ColumnWidth = 1   ’设置第一列的列宽为1个字符宽
    L1=Columns(1).Width       ’第一列的列宽(磅)
    Columns(1).ColumnWidth = 2   ’设置第一列的列宽为2个字符宽
    L2=Columns(1).Width       ’第一列的列宽(磅)
    L3=L2-L1           ’每增加一个字符的定值
    ①、当 X≤L1×25.4/72时: 
    列宽 L=X×72/25.4/L1 (字符)
    ②、当 X>L1×25.4/72时: 
    列宽 L=(X×72/25.4-L1)/L3+1 (字符)