计算合并单元格所在行的准确行高

发布时间:2012/12/19 00:12 发布者:jian

返回博客中心

Spread for WinForms中提供了获取单元格、行和列实际大小的方法,分别如下:

单元格实际大小:

fpSpread1.ActiveSheet.GetPreferredCellSize(0, 0);

 

行实际高度:

fpSpread1.ActiveSheet.GetPreferredRowHeight(0);

 

列实际宽度:

fpSpread1.ActiveSheet.GetPreferredColumnWidth(0);

 

在通过 GetPreferredRowHeight 获取有合并单元格的行的行高时,可能不是十分准确,这是我们可以通过以下方法来计算这样行的准确高度,代码如下:

    private float GetRowBestHeight(int viRow)
    {
        Graphics vgphGraphics = fpSpread1.CreateGraphics();
        int iLoop = 0;
        float fBestHeight = 0;

        SizeF sfBestSize = default(SizeF);
        float fWidth = 0;

        while ((iLoop < fpSpread1.ActiveSheet.ColumnCount - 1))
        {
            fWidth = 0;
            for (int iTemp = 0; iTemp <= (fpSpread1.ActiveSheet.Cells[viRow, iLoop].ColumnSpan - 1); iTemp++)
            {
                fWidth += fpSpread1.ActiveSheet.Columns[iLoop + iTemp].Width;
            }
            sfBestSize = vgphGraphics.MeasureString(fpSpread1.ActiveSheet.Cells[viRow, iLoop].Text, fpSpread1.Font, Convert.ToInt32(fWidth));
            if (sfBestSize.Height > fBestHeight)
            {
                fBestHeight = sfBestSize.Height;
            }
            iLoop += fpSpread1.ActiveSheet.Cells[viRow, iLoop].ColumnSpan;

        }
        return fBestHeight;
    }

 

运行截图:

 

源码下载:

 7404_High.zip (10.89 kb)


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网