Spread:提示用户单元格内容长度超出了列宽

在Excel中如果单元格内容长度超出了单元格的显示范围,此时,单元格将显示为“#######”的字符串,这样可以提示用户单元格未能显示全部内容,需要调整列宽以显示所有内容,此时,用户可以双击该列的边线调整列宽,或者以拖动的方式调整列宽,本文主要讲解在Spread for WinForms中如何实现该功能。首先,我们需要定义一个自定义的单元格类型,如何重写PaintCell方法,根据单元格内容的长度与单元格的宽带来决定是否需要将单元格内容显示为“#######”

发布于 2013/02/22 00:00

在Excel中如果单元格内容长度超出了单元格的显示范围,此时,单元格将显示为“#######”的字符串,这样可以提示用户单元格未能显示全部内容,需要调整列宽以显示所有内容,此时,用户可以双击该列的边线调整列宽,或者以拖动的方式调整列宽,本文主要讲解在Spread for WinForms中如何实现该功能。

首先,我们需要定义一个自定义的单元格类型,如何重写PaintCell方法,根据单元格内容的长度与单元格的宽带来决定是否需要将单元格内容显示为“#######”

代码如下:

    public class CCellType : FarPoint.Win.Spread.CellType.TextCellType
    {
        public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
        {
            // 判断单元格内容是否为空,如果不为空就判断单元格内容是否超过了单元格的宽带
            if (value != null && g.MeasureString(value.ToString(),appearance.Font).Width > r.Width)
            {
                value = new string('#', value.ToString().Length);
            }

            base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
        }
    }

 

如何在Spread中使用该单元格类型:

    private void Form2_Load(object sender, EventArgs e)
    {
        fpSpread1.ActiveSheet.Columns[0].CellType = new CCellType();
        fpSpread1.ActiveSheet.Cells[0, 0].Value = "12345679";
        fpSpread1.ActiveSheet.Cells[1, 0].Value = "12345679123456789123456789";
    }

 

运行截图:

image

 

源码下载:Spread .NET 6 + VS2008

Spread_Cell.zip (12.89 kb)

关于葡萄城

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

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

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

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