Richard.Ma 发表于 2023-11-10 17:14:01

为数字字符串单元格加上和Excel一样的绿色角标



数字字符串是使用电子表格过程中经常会遇到的情况,单元格的看起来是数字,但是实际值并不是数字值,而是一个字符串。

一般来说,有两种可能性导致输入数字字符串

[*]UI操作时,如果单元格类型是文本,那么输入的数字会转换为字符串。
[*]setValue等接口设置单元格值的时候,没有留意设置的值参数,传入的是字符串。尤其是后端发过来的数据,很多本身就是数字字符串


在Excel中,对于数字字符串会显示一个绿色的角标,且在选中时,会有提示“以文本形式存储的数字”



SpreadJS由于和Excel的设计差异,对数字字符串的兼容性更好,包括在计算的时候也可以支持“数字字符串”参与计算。因此并没有角标来专门区分

如果需要和Excel一样显示绿色角标,可以对单元格类型中的Text类型的paint方法进行重写,在执行原有的绘制逻辑前,给单元格样式加上一个“单元格折角”
继续绘制,即可让普通单元格实现同样的效果


GC.Spread.Sheets.CellTypes.Text.prototype.paint=function (ctx, value, x, y, w, h, style, context) {
    if(typeof(value) == "string"&&/^+\.?*$/.test(value)){
      style.decoration = {
            cornerFold: {
                size: 10,
                position: GC.Spread.Sheets.CornerPosition.leftTop,
                color: "green"
            }
      }
    }
    GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this, );

}

注意,上述代码仅提供了一个简单的思路,来实现效果
实际应用中,你需要考虑这个设置会覆盖本身的折角设置,进行逻辑判断

页: [1]
查看完整版本: 为数字字符串单元格加上和Excel一样的绿色角标