- 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()方法,否则行高又将混乱。