粘贴Excel中的千分位数字到SpreadJS中触发非数字验证

看SpreadJS的在线编辑器可以正常粘贴,可能是公司用的版本太老了。

什么是数字验证

可以给单元格设置数据验证器,有数、日期、文本长度等官方验证器,非相同类型的数据填入单元格就会触发校验提示。

为什么千分位数字被识别成了非数字

Excel中设置了格式的数字——比如123,456,789.00,在复制的文本中包含了一些空白字符[1]。如果没有这些空白字符是可以正常粘贴的。

解决方案

失败方案

当双击SpreadJS的单元格[2]粘贴时,会触发EditChange事件,事件参数中的editingText是单元格中正在编辑的文体,不过用代码修改不了它们。所以通过事件似乎无法直接干预粘贴的字符串。

解决方案
进入编辑态会触发editStarting事件,在这个事件中修改系统剪切板中的内容,将空白字符去掉就可以了。

附加事件触发顺序


  1. 空格、制表符、回车等,不是很确定这里到底包含了哪些字符。 ↩︎

  2. 双击单元格意味着进入了单元格的编辑状态,不会触发clipboardPasting等事件。 ↩︎

posted @ 2023-03-23 17:50  让速不让路  阅读(46)  评论(0编辑  收藏  举报