为数字字符串单元格加上和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]