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

QQ登录

只需一步,快速开始

Dtttax

银牌会员

280

主题

693

帖子

2233

积分

银牌会员

积分
2233

[已处理] 表单删除

Dtttax
银牌会员   /  发表于:2019-5-21 20:14  /   查看:3921  /  回复:6
我们删除表单用的是spread.removeSheet(spread.getSheetIndex(sheetName)),在删除完后需要修改其他表单的名称,使用sheet.name()的时候报错,日志在附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

6 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-5-22 06:24:26
沙发
您好,看报错信息,sheet.name()在调用时,sheet变量的值是null,

引用了空对象,或引用的对象已销毁。

请检查变量的引用,或提供完整的Demo我们为您排查。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2019-5-22 15:26:33
板凳
spreadJs升级到12.1.0后,npm用5.6.0打包就没问题,npm6.4打包就会出这个问题,是不是兼容性问题啊
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-5-22 17:17:14
地板
您好,实际上这个问题与npm版本是没有关系的,npm执行的命令都配置在package.json里,所以您需要检查一下映射的命令和引用包的版本是否统一。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2019-5-26 13:33:03
5#
本帖最后由 Dtttax 于 2019-5-26 13:58 编辑

升级到v12.1.0,同样的代码,不同的电脑,有的会有这个问题,有的没有这个问题。都是一样的node 和npm版本。如果升级最新的nodejs全部都是报这个错误
删除的时候重新排序比如有A,A2,A3,A4,如果删除了A2,就把A3改为A2 A4改为A3.
主要代码:

spread.removeSheet(spread.getSheetIndex(sheetName))
let name="A2"
let originName="A1"
const [prefix] = name
    const regexp = new RegExp('^' + prefix)
    if (originName.startsWith(prefix) ) {
      let deleteIndex = +name.replace(regexp, '')
      spread.sheets.map(v => {
          return {
            n: v.name(),
            ref: v
          }
        })
        .filter(v => v.n.startsWith(prefix))
        .filter(v => +v.n.replace(regexp, '') > deleteIndex)
        .forEach(v => {
          let suffix = v.n.replace(regexp, '')
          if(suffix == '2'){
            suffix = ''
          }else{
            suffix = parseInt(suffix)-1
          }
          v.ref.name(prefix + suffix)
          refreshSheetLink(spread,v.ref)
        })
    }

  执行到这里v.ref.name(prefix + suffix)就报以下错误。

asyncToGenerator.js?74f6:20 Uncaught (in promise) TypeError: Cannot read property 'getRowCount' of null
    at oa.getRowCount (gc.spread.sheets.all.min.js?c74a:29)
    at b.getRowCount (gc.spread.sheets.all.min.js?c74a:32)
    at a.getWorkingNodeInfo (gc.spread.sheets.all.min.js?c74a:31)
    at a.ATa (gc.spread.sheets.all.min.js?c74a:31)
    at a.getFormula (gc.spread.sheets.all.min.js?c74a:31)
    at a.setFormula (gc.spread.sheets.all.min.js?c74a:31)
    at z (gc.spread.sheets.all.min.js?c74a:34)
    at Function.o.adjustModelFormulasAfterSetSheetName (gc.spread.sheets.all.min.js?c74a:34)
    at oa.setName (gc.spread.sheets.all.min.js?c74a:34)
    at Function.a.ao (gc.spread.sheets.all.min.js?c74a:25)

如果点击其他sheet.就报下面错误:这个错误主要是在切换表的时候执行了
sheet.setFormula(row, col,"=0") 这个地方就开始报下面的错误了。

Uncaught (in promise) TypeError: Cannot read property 'getRowCount' of null
    at oa.getRowCount (gc.spread.sheets.all.min.js?c74a:29)
    at b.getRowCount (gc.spread.sheets.all.min.js?c74a:32)
    at a.rC (gc.spread.sheets.all.min.js?c74a:31)
    at a.initDelay (gc.spread.sheets.all.min.js?c74a:32)
    at a.Gg (gc.spread.sheets.all.min.js?c74a:17)
    at a.recalculateAll (gc.spread.sheets.all.min.js?c74a:17)
    at a.resume (gc.spread.sheets.all.min.js?c74a:17)
    at oa.resumeCalcService (gc.spread.sheets.all.min.js?c74a:33)
    at sheetTabClick (refresh-sheet.js?16dd:848)
    at activeSheetChanged (spread-ptc-extension.js?85a1:11252)
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2019-5-27 13:52:03
6#
如果切回到12.01代码就没问题
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-5-27 18:14:54
7#
您好,您清理一下npm的缓存,例如package-lock.json和node_modules,之后再重新npm install,再试一下还有没有问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部