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

Spread for WinForms中提供了获取单元格、行和列实际大小的方法,分别如下:单元格实际大小:fpSpread1.ActiveSheet.GetPreferredCellSize(0, 0); 行实际高度:fpSpread1.ActiveSheet.GetPreferredRowHeight(0); 列实际宽度:fpSpread1.ActiveSheet.GetPreferredColumnWidth(0);

发布于 2012/12/19 00:00

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)

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态