数字字符串是使用电子表格过程中经常会遇到的情况, 单元格的看起来是数字,但是实际值并不是数字值,而是一个字符串。
一般来说,有两种可能性导致输入数字字符串
- 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"&&/^[0-9]+\.?[0-9]*$/.test(value)){
- style.decoration = {
- cornerFold: {
- size: 10,
- position: GC.Spread.Sheets.CornerPosition.leftTop,
- color: "green"
- }
- }
- }
- GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this, [ctx, value, x, y, w, h, style, context]);
- }
复制代码
注意,上述代码仅提供了一个简单的思路,来实现效果
实际应用中,你需要考虑这个设置会覆盖本身的折角设置,进行逻辑判断
|
|