本帖最后由 沉沉 于 2022-9-7 14:50 编辑
首先校验所有单元格,如果包含特殊字符,变为红色边框,如果修改后没有特殊字符,则恢复默认样式。这里可以用正则表达式进行数据验证可以先参考这篇文章
https://gcdn.grapecity.com.cn/showtopic-54393-1-1.html
在此基础上,修改正则表达式为:
- sheet.setArray(10,0,[['ab!c'],['*'],['123@'],['~!@#'],[678],['!'],['我']])
- spread.options.highlightInvalidData = true;
- var nCondition = new MyCondition("[`~!@#$%^&*()_+<>?:"{},.\\/;\'[\\]]");
- var dv9 = new GC.Spread.Sheets.DataValidation.DefaultDataValidator(nCondition);
- dv9.type(GC.Spread.Sheets.DataValidation.CriteriaType.custom);
- dv9.highlightStyle({
- type: GC.Spread.Sheets.DataValidation.HighlightType.icon,
- color: "red",
- position:
- GC.Spread.Sheets.DataValidation.HighlightPosition.between,
- });
- for (let i = 10; i <= 16; i++) {
- sheet.setDataValidator(i, 0, dv9);
- }
- function MyCondition (reg){
- this.reg = reg;
- GC.Spread.Sheets.ConditionalFormatting.Condition.apply(this, arguments);
- }
- MyCondition.prototype = new GC.Spread.Sheets.ConditionalFormatting.Condition();
- MyCondition.prototype.evaluate = function (evaluator, baseRow, baseColumn, actualObj) {
- var reg = new RegExp(this.reg);
- if (!reg.test(actualObj)) {
- // console.log('包含特殊字符',actualObj)
- return true;
- }else{
- // console.log('不包含特殊字符',actualObj)
- return false;
- }
- };
复制代码
最后实现效果为:
对于您说的这句话“有可能单元格每一列单元格初始背景色和单元格边框样式不一致,如何回复到之前样式”
不太明白您的需求。
|