• Range.get_Offset(rows,cols), Range若为合并单元格,那么get_Offset并不如我们想像的以Range的左上角单元格为基点计算,比如,如果Range为A7:B7合并,则Range.get_Offset(1,0)为正常为A8,而Range.get_Offset(1,1)为C8,并不是B8。因此原点单元格最好使用非合并单元格。
  • 合并单元格的AutoFit功能无法正确计算行高,独立单元格则正常。网上有一段VBA的代码可以勉强做单行合并单元格的AutoFit,但它还不能照顾EntireRow,因此只能扩展行高,而不敢收缩,既然如此,我倒是建议先选择将要合并的单元格中的某个,将其宽度扩展到合并以后的宽度,填充内容后再将其宽度收缩到原值,最后再Merge:
    double w0 = (double)originRng.ColumnWidth;
    double w1 = (double)originRng.Next.ColumnWidth;
    rng 
    = originRng.get_Offset(r, 0);
    rng.WrapText 
    = true;
    rng.Value2 
    = "line1\r\nline2\r\nline";
    rng 
    = worksheet1.get_Range(originRng.get_Offset(r, 0), originRng.get_Offset(r, 1));
    rng.Merge(
    false);
    originRng.ColumnWidth 
    = w0;

    注意,以上代码运行后不能再使用“最适合的行高”功能,相应的在程序中也就是不能使用AutoFit()方法,否则行高又将混乱。
posted on 2006-08-24 11:38  愚公  阅读(6301)  评论(0编辑  收藏  举报