找回密码
 立即注册

QQ登录

只需一步,快速开始

zhengqy810624

新手上路

2

主题

3

帖子

48

积分

新手上路

积分
48
  • 45

    金币

  • 主题

  • 帖子

最新发帖
zhengqy810624
新手上路   /  发表于:2012-12-17 22:36  /   查看:4950  /  回复:1
各位专家,有个问题请大家帮忙解决,就是行的高度根据单元格输入的字的多少自动增加,我用的是:GetPreferredRowHeight方法,但只能对列未合并的行有用,一旦一行中有多列合并时,只有合并列的第一列有效,如果用GetPreferredRowHeight(row, ignoreHeaders, ignoreSpans)时,ignoreSpans设为true时,就没有任何效果了,怎么样才能使一行中有合并列时,行的增加考虑合并列的情况。

无标题.jpg

30.61 KB, 下载次数: 194

无标题2.jpg

31.2 KB, 下载次数: 182

1 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-18 16:50:00
沙发
回复 1楼zhengqy810624的帖子

zhengqy810624 你好

针对你的问题,你可以调用以下方法来计算Span之后的行高,代码如下:
  1.     private float GetRowBestHeight(int viRow)
  2.     {
  3.         Graphics vgphGraphics = fpSpread1.CreateGraphics();
  4.         int iLoop = 0;
  5.         float fBestHeight = 0;

  6.         SizeF sfBestSize = default(SizeF);
  7.         float fWidth = 0;

  8.         while ((iLoop < fpSpread1.ActiveSheet.ColumnCount - 1))
  9.         {
  10.             fWidth = 0;
  11.             for (int iTemp = 0; iTemp <= (fpSpread1.ActiveSheet.Cells[viRow, iLoop].ColumnSpan - 1); iTemp++)
  12.             {
  13.                 fWidth += fpSpread1.ActiveSheet.Columns[iLoop + iTemp].Width;
  14.             }
  15.             sfBestSize = vgphGraphics.MeasureString(fpSpread1.ActiveSheet.Cells[viRow, iLoop].Text, fpSpread1.Font, Convert.ToInt32(fWidth));
  16.             if (sfBestSize.Height > fBestHeight)
  17.             {
  18.                 fBestHeight = sfBestSize.Height;
  19.             }
  20.             iLoop += fpSpread1.ActiveSheet.Cells[viRow, iLoop].ColumnSpan;

  21.         }
  22.         return fBestHeight;
  23.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部