请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

zhangjintao

注册会员

18

主题

45

帖子

147

积分

注册会员

积分
147

[已处理] 数据检查效率低

zhangjintao
注册会员   /  发表于:2018-3-27 01:05  /   查看:3992  /  回复:5
var spread2 = $('#ss').data('workbook');
var spreadNS = GC.Spread.Sheets;
spread2.options.highlightInvalidData = true;
var sheet = spread2.getSheet(0);
var dv1 = new spreadNS.DataValidation.createNumberValidator(0);
dv1.inputTitle('重复按行:');
dv1.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 0, dv1);
}
var dv2 = new spreadNS.DataValidation.createNumberValidator(0);
dv2.inputTitle('重复按行:');
dv2.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 1, dv2);
}
var dv3 = new spreadNS.DataValidation.createNumberValidator(0);
dv3.inputTitle('重复按行:');
dv3.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 3, dv3);
}
var dv4 = new spreadNS.DataValidation.createNumberValidator(0);
dv4.inputTitle('重复按行:');
dv4.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 5, dv4);
}
var dv5 = new spreadNS.DataValidation.createNumberValidator(0);
dv5.inputTitle('重复按行:');
dv5.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 6, dv5);
}
var dv6 = new spreadNS.DataValidation.createNumberValidator(0);
dv6.inputTitle('重复按行:');
dv6.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 7, dv6);
}
var dv7 = new spreadNS.DataValidation.createNumberValidator(0);
dv7.inputTitle('重复按行:');
dv7.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 8, dv7);
}
var dv8 = new spreadNS.DataValidation.createNumberValidator(0);
dv8.inputTitle('重复按行:');
dv8.inputMessage('请输入整数');
for (var i = 6; i < 20; i++) {
    sheet.setDataValidator(i, 9, dv8);
}
var dv9 = new spreadNS.DataValidation.createNumberValidator(0);
dv9.inputTitle('单一:');
dv9.inputMessage('请输入整数');
sheet.setDataValidator(3, 3, dv9);
var dv10 = new spreadNS.DataValidation.createNumberValidator(0);
dv10.inputTitle('单一:');
dv10.inputMessage('请输入整数');
sheet.setDataValidator(9, 3, dv10);
var dv11 = new spreadNS.DataValidation.createNumberValidator(0);
dv11.inputTitle('单一:');
dv11.inputMessage('请输入整数');
sheet.setDataValidator(3, 4, dv11);
var dv12 = new spreadNS.DataValidation.createNumberValidator(0);
dv12.inputTitle('单一:');
dv12.inputMessage('请输入整数');
sheet.setDataValidator(6, 4, dv12);
var dv13 = new spreadNS.DataValidation.createNumberValidator(0);
dv13.inputTitle('单一:');
dv13.inputMessage('请输入整数');
sheet.setDataValidator(9, 4, dv13);
var dv14 = new spreadNS.DataValidation.createNumberValidator(0);
dv14.inputTitle('单一:');
dv14.inputMessage('请输入整数');
sheet.setDataValidator(2, 21, dv14);
var dv15 = new spreadNS.DataValidation.createNumberValidator(0);
dv15.inputTitle('单一:');
dv15.inputMessage('请输入整数');
sheet.setDataValidator(2, 24, dv15);
var dv16 = new spreadNS.DataValidation.createNumberValidator(0);
dv16.inputTitle('单一:');
dv16.inputMessage('请输入整数');
sheet.setDataValidator(4, 24, dv16);
var dv17 = new spreadNS.DataValidation.createNumberValidator(0);
dv17.inputTitle('单一:');
dv17.inputMessage('请输入整数');
sheet.setDataValidator(6, 24, dv17);
var dv18 = new spreadNS.DataValidation.createNumberValidator(0);
dv18.inputTitle('单一:');
dv18.inputMessage('请输入整数');
sheet.setDataValidator(8, 24, dv18);
var dv19 = new spreadNS.DataValidation.createNumberValidator(0);
dv19.inputTitle('单一:');
dv19.inputMessage('请输入整数');
sheet.setDataValidator(10, 24, dv19);
var dv20 = new spreadNS.DataValidation.createNumberValidator(0);
dv20.inputTitle('单一:');
dv20.inputMessage('请输入整数');
sheet.setDataValidator(2, 25, dv20);
var dv21 = new spreadNS.DataValidation.createNumberValidator(0);
dv21.inputTitle('单一:');
dv21.inputMessage('请输入整数');
sheet.setDataValidator(4, 25, dv21);
var dv22 = new spreadNS.DataValidation.createNumberValidator(0);
dv22.inputTitle('单一:');
dv22.inputMessage('请输入整数');
sheet.setDataValidator(6, 25, dv22);
var dv23 = new spreadNS.DataValidation.createNumberValidator(0);
dv23.inputTitle('单一:');
dv23.inputMessage('请输入整数');
sheet.setDataValidator(8, 25, dv23);
var dv24 = new spreadNS.DataValidation.createNumberValidator(0);
dv24.inputTitle('单一:');
dv24.inputMessage('请输入整数');
sheet.setDataValidator(10, 25, dv24);



如上代码为执行数据检查代码,在页面大约需执行30秒左右。。。有没有优化方法,请指点

5 个回复

倒序浏览
lin123
注册会员   /  发表于:2018-3-27 11:36:12
沙发
表单绘制开始前spread.suspendPaint();
开始定制规则什么的
结束时spread.resumePaint();

还有把你的for循环改成批量设置
sheet.setDataValidator(sel.row, sel.col, sel.rowCount, sel.colCount, validator);

评分

参与人数 1金币 +200 收起 理由
Clark.Pan + 200 赞一个!

查看全部评分

回复 使用道具 举报
zhangjintao
注册会员   /  发表于:2018-3-27 13:26:28
板凳
lin123 发表于 2018-3-27 11:36
表单绘制开始前spread.suspendPaint();
开始定制规则什么的
结束时spread.resumePaint();

谢谢你的指点,效率上提升很大,不过还是需要十秒左右的时间,难道这个属性的效率就如此了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-27 18:15:47
地板
您好,正确的方式就是2楼提供的那样,我这边用了之后基本秒开啊,713ms
image.png120547179.png
代码如下:
  1. spread2.suspendPaint();
  2.                                 spread2.options.highlightInvalidData = true;
  3.                                 var sheet = spread2.getSheet(0);
  4.                                 var dv1 = new spreadNS.DataValidation.createNumberValidator(0);
  5.                                 dv1.inputTitle('重复按行:');
  6.                                 dv1.inputMessage('请输入整数');
  7.                                 for (var i = 6; i < 20; i++) {
  8.                                         sheet.setDataValidator(i, 0, dv1);
  9.                                 }
  10.                                 var dv2 = new spreadNS.DataValidation.createNumberValidator(0);
  11.                                 dv2.inputTitle('重复按行:');
  12.                                 dv2.inputMessage('请输入整数');
  13.                                 for (var i = 6; i < 20; i++) {
  14.                                         sheet.setDataValidator(i, 1, dv2);
  15.                                 }
  16.                                 var dv3 = new spreadNS.DataValidation.createNumberValidator(0);
  17.                                 dv3.inputTitle('重复按行:');
  18.                                 dv3.inputMessage('请输入整数');
  19.                                 for (var i = 6; i < 20; i++) {
  20.                                         sheet.setDataValidator(i, 3, dv3);
  21.                                 }
  22.                                 var dv4 = new spreadNS.DataValidation.createNumberValidator(0);
  23.                                 dv4.inputTitle('重复按行:');
  24.                                 dv4.inputMessage('请输入整数');
  25.                                 for (var i = 6; i < 20; i++) {
  26.                                         sheet.setDataValidator(i, 5, dv4);
  27.                                 }
  28.                                 var dv5 = new spreadNS.DataValidation.createNumberValidator(0);
  29.                                 dv5.inputTitle('重复按行:');
  30.                                 dv5.inputMessage('请输入整数');
  31.                                 for (var i = 6; i < 20; i++) {
  32.                                         sheet.setDataValidator(i, 6, dv5);
  33.                                 }
  34.                                 var dv6 = new spreadNS.DataValidation.createNumberValidator(0);
  35.                                 dv6.inputTitle('重复按行:');
  36.                                 dv6.inputMessage('请输入整数');
  37.                                 for (var i = 6; i < 20; i++) {
  38.                                         sheet.setDataValidator(i, 7, dv6);
  39.                                 }
  40.                                 var dv7 = new spreadNS.DataValidation.createNumberValidator(0);
  41.                                 dv7.inputTitle('重复按行:');
  42.                                 dv7.inputMessage('请输入整数');
  43.                                 for (var i = 6; i < 20; i++) {
  44.                                         sheet.setDataValidator(i, 8, dv7);
  45.                                 }
  46.                                 var dv8 = new spreadNS.DataValidation.createNumberValidator(0);
  47.                                 dv8.inputTitle('重复按行:');
  48.                                 dv8.inputMessage('请输入整数');
  49.                                 for (var i = 6; i < 20; i++) {
  50.                                         sheet.setDataValidator(i, 9, dv8);
  51.                                 }
  52.                                 var dv9 = new spreadNS.DataValidation.createNumberValidator(0);
  53.                                 dv9.inputTitle('单一:');
  54.                                 dv9.inputMessage('请输入整数');
  55.                                 sheet.setDataValidator(3, 3, dv9);
  56.                                 var dv10 = new spreadNS.DataValidation.createNumberValidator(0);
  57.                                 dv10.inputTitle('单一:');
  58.                                 dv10.inputMessage('请输入整数');
  59.                                 sheet.setDataValidator(9, 3, dv10);
  60.                                 var dv11 = new spreadNS.DataValidation.createNumberValidator(0);
  61.                                 dv11.inputTitle('单一:');
  62.                                 dv11.inputMessage('请输入整数');
  63.                                 sheet.setDataValidator(3, 4, dv11);
  64.                                 var dv12 = new spreadNS.DataValidation.createNumberValidator(0);
  65.                                 dv12.inputTitle('单一:');
  66.                                 dv12.inputMessage('请输入整数');
  67.                                 sheet.setDataValidator(6, 4, dv12);
  68.                                 var dv13 = new spreadNS.DataValidation.createNumberValidator(0);
  69.                                 dv13.inputTitle('单一:');
  70.                                 dv13.inputMessage('请输入整数');
  71.                                 sheet.setDataValidator(9, 4, dv13);
  72.                                 var dv14 = new spreadNS.DataValidation.createNumberValidator(0);
  73.                                 dv14.inputTitle('单一:');
  74.                                 dv14.inputMessage('请输入整数');
  75.                                 sheet.setDataValidator(2, 21, dv14);
  76.                                 var dv15 = new spreadNS.DataValidation.createNumberValidator(0);
  77.                                 dv15.inputTitle('单一:');
  78.                                 dv15.inputMessage('请输入整数');
  79.                                 sheet.setDataValidator(2, 24, dv15);
  80.                                 var dv16 = new spreadNS.DataValidation.createNumberValidator(0);
  81.                                 dv16.inputTitle('单一:');
  82.                                 dv16.inputMessage('请输入整数');
  83.                                 sheet.setDataValidator(4, 24, dv16);
  84.                                 var dv17 = new spreadNS.DataValidation.createNumberValidator(0);
  85.                                 dv17.inputTitle('单一:');
  86.                                 dv17.inputMessage('请输入整数');
  87.                                 sheet.setDataValidator(6, 24, dv17);
  88.                                 var dv18 = new spreadNS.DataValidation.createNumberValidator(0);
  89.                                 dv18.inputTitle('单一:');
  90.                                 dv18.inputMessage('请输入整数');
  91.                                 sheet.setDataValidator(8, 24, dv18);
  92.                                 var dv19 = new spreadNS.DataValidation.createNumberValidator(0);
  93.                                 dv19.inputTitle('单一:');
  94.                                 dv19.inputMessage('请输入整数');
  95.                                 sheet.setDataValidator(10, 24, dv19);
  96.                                 var dv20 = new spreadNS.DataValidation.createNumberValidator(0);
  97.                                 dv20.inputTitle('单一:');
  98.                                 dv20.inputMessage('请输入整数');
  99.                                 sheet.setDataValidator(2, 25, dv20);
  100.                                 var dv21 = new spreadNS.DataValidation.createNumberValidator(0);
  101.                                 dv21.inputTitle('单一:');
  102.                                 dv21.inputMessage('请输入整数');
  103.                                 sheet.setDataValidator(4, 25, dv21);
  104.                                 var dv22 = new spreadNS.DataValidation.createNumberValidator(0);
  105.                                 dv22.inputTitle('单一:');
  106.                                 dv22.inputMessage('请输入整数');
  107.                                 sheet.setDataValidator(6, 25, dv22);
  108.                                 var dv23 = new spreadNS.DataValidation.createNumberValidator(0);
  109.                                 dv23.inputTitle('单一:');
  110.                                 dv23.inputMessage('请输入整数');
  111.                                 sheet.setDataValidator(8, 25, dv23);
  112.                                 var dv24 = new spreadNS.DataValidation.createNumberValidator(0);
  113.                                 dv24.inputTitle('单一:');
  114.                                 dv24.inputMessage('请输入整数');
  115.                                 sheet.setDataValidator(10, 25, dv24);
  116.                                 spread2.resumePaint();
复制代码
回复 使用道具 举报
zhangjintao
注册会员   /  发表于:2018-3-28 13:32:44
5#
lin123 发表于 2018-3-27 11:36
表单绘制开始前spread.suspendPaint();
开始定制规则什么的
结束时spread.resumePaint();

用你的方法已完美解决,我们的代码出了点小bug,谢谢你
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-28 17:17:13
6#
不客气,有什么问题欢迎另开新帖进行询问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部