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

发布时间:2013/02/22 00:02 发布者:jian

返回博客中心

在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)


关于葡萄城

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

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