找回密码
 立即注册

QQ登录

只需一步,快速开始

allen-an

注册会员

16

主题

45

帖子

145

积分

注册会员

积分
145
allen-an
注册会员   /  发表于:2022-12-14 10:45  /   查看:1164  /  回复:5
1金币
本帖最后由 allen-an 于 2022-12-14 11:02 编辑

不知道这算不算你们的 bug,开发环境是 vue3+ts+vite,同时使用了 designer 和 spread

  1. <script setup lang="ts">
  2. import {onMounted, ref} from 'vue'
  3. import '@grapecity/spread-sheets/styles/gc.spread.sheets.excel2016colorful.css';
  4. import '@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css';
  5. import '@grapecity/spread-sheets-designer-resources-cn';
  6. import DesignerGC from '@grapecity/spread-sheets-designer';
  7. import GC from '@grapecity/spread-sheets';
  8. import data from './data';// sheet json


  9. const spreadBox=ref();
  10. let spread: any = null;
  11. onMounted(() => {
  12.   const designer = new DesignerGC.Spread.Sheets.Designer.Designer(spreadBox.value);
  13.   spread = designer.getWorkbook();

  14.   spread.suspendPaint();
  15.   spread.clearSheets();
  16.   const sheet = new GC.Spread.Sheets.Worksheet('a');
  17.   sheet.fromJSON(data);
  18.   spread.addSheet(0, sheet);
  19.   spread.resumePaint();
  20. })

  21. </script>
复制代码
上面这种写法会出现chart 组件报错,只有在 sheet 中有图表会报这个错误
image.png469319152.png
解决方法就是不要用 chearSheet 这个方法,使用覆盖
  1. spread.suspendPaint();
  2. const sheet = spread.getActiveSheet();
  3. sheet.name(sheetName);
  4. sheet.fromJSON(data);
  5. spread.resumePaint();
复制代码


最佳答案

查看完整内容

经过测试解决了,原因是我每次 formJSON 都重新绑定了事件导致的,删掉就可以了。

评分

参与人数 1金币 +666 收起 理由
Clark.Pan + 666

查看全部评分

5 个回复

倒序浏览
最佳答案
最佳答案
allen-an
注册会员   /  发表于:2022-12-14 10:45:38
来自 5#
Clark.Pan 发表于 2022-12-15 19:18
那需要您发一个能够重现问题的完整demo,我们帮您看下

经过测试解决了,原因是我每次 formJSON 都重新绑定了事件导致的,删掉就可以了。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-14 14:56:40
2#
好的收到,感谢您提供完整的问题以及解决方法,论坛金币奖励奉上
回复 使用道具 举报
allen-an
注册会员   /  发表于:2022-12-15 18:18:02
3#
Clark.Pan 发表于 2022-12-14 14:56
好的收到,感谢您提供完整的问题以及解决方法,论坛金币奖励奉上

用这种方式去做又会引发新的问题,sheet.formJSON了几次,点击一个单元格EnterCell事件就会触发几次(其他事件可能也会触发,还没测试),而且有时候之前的内容还会显示出来,使用 sheet.clear()方法清除也没有解决问题。感觉像是之前的 sheet 会隐藏在后面一样。所以我上面说的问题还是需要你们来解决下。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-15 19:18:58
4#
那需要您发一个能够重现问题的完整demo,我们帮您看下
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-16 15:40:20
6#
问题解决了就好,有问题欢迎另开新帖交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部