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

QQ登录

只需一步,快速开始

dept_estate_dev

初级会员

35

主题

115

帖子

326

积分

初级会员

积分
326
dept_estate_dev
初级会员   /  发表于:2016-12-12 15:01  /   查看:3408  /  回复:7
从EXCEL粘贴过来的单元格无法编辑、修改、删除

7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-12 17:24:46
沙发
可以具体描述下吗,我这里简单测试无法重现问题。
回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2016-12-12 18:02:41
板凳
sheet.isProtected(true);
spreadjs是保护的
excel不是保护的,从excel复制了几个单元格带过来,值烤过来都没问题,但是无法编辑单元格了
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-13 09:21:53
地板
默认如果spread如果保护的话是不能粘贴数据的,您是怎么粘贴进去的?
回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2016-12-13 09:48:56
5#
有些单元格我设置locked(false),所以某些单元格是可以编辑的,但是粘贴过去之后就变得不可编辑了
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-13 10:39:48
6#
本帖最后由 dexteryao 于 2016-12-13 10:41 编辑

粘贴时locked属性被覆盖了,确认是个bug,现在临时解决方案是粘贴时缓存下range中的 locked信息,粘贴后再设置回去。

  1. var _lockedStyleCatch=[]
  2. spread.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (sender, args) {
  3.     console.log(args);
  4.     _lockedStyleCatch=[];
  5.     var range = args.cellRange, sheet = args.sheet;
  6.     for(var row = range.row; row <= range.rowCount; row++){
  7.         for(var col = range.col; col <= range.colCount; col++){
  8.             if(sheet.getCell(row, col).locked() === false){
  9.                 _lockedStyleCatch.push({row: row, col:col});
  10.             }
  11.         }
  12.     }
  13. });

  14. spread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (sender, args) {
  15.     console.log(args);
  16.     if(_lockedStyleCatch.length > 0){
  17.         var sheet = args.sheet;
  18.         sheet.suspendPaint();
  19.         for(var i = 0; i < _lockedStyleCatch.length; i++){
  20.             var cell = _lockedStyleCatch[i];
  21.             sheet.getCell(cell.row, cell.col).locked(false)
  22.         }
  23.         sheet.resumePaint();
  24.     }
  25. });
复制代码


回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2016-12-13 11:37:33
7#
已解决,第一段代码有点错误。

  1. for(var i = 0; i < range.rowCount; i++){
  2.                         for(var j = 0; j < range.colCount; j++){
  3.                                 var row = range.row + i;
  4.                                 var col = range.col + j;
  5.                             if(sheet.getCell(row, col).locked() === false){
  6.                                 _lockedStyleCatch.push({row: row, col:col});
  7.                             }
  8.                         }
  9.                     }
复制代码
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-13 13:18:30
8#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部