找回密码
 立即注册

QQ登录

只需一步,快速开始

中达安

金牌服务用户

3

主题

15

帖子

46

积分

金牌服务用户

积分
46
中达安
金牌服务用户   /  发表于:2023-8-25 11:10  /   查看:2284  /  回复:12
1金币
本帖最后由 Ellia.Duan 于 2023-8-28 11:33 编辑

期望实现的效果:
有一个无页面视图的Workbook实例,用于获取、修改等操作excel数据。

目前的实现:
目前是new Workbook(dom),然后将dom用css隐藏。考虑实际存在dom操作,性能可能会比较差。

最佳答案

查看完整内容

您好,这边经过调研,有了如下结果:按照设计,incrementalLoading 会将导入过程拆分为不同的任务,然后逐个执行加载。在此过程中,incrementalLoading 会监视 UI 事件并尝试阻止发生 UI 行为的加载过程。这样,将为最终用户加载海量数据提供更好的用户体验。如果没有 DOM,增量加载就没有意义。所以这里没有dom ,将不会进入loaded方法。建议您如果使用增量加载,还是需要dom元素。

12 个回复

倒序浏览
最佳答案
最佳答案
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-25 11:10:29
来自 13#
中达安 发表于 2023-8-28 09:14
因为我需要监听 ss.fromJSON 之后的 loaded 事件;加载完成之后开始处理业务逻辑。
也就是将你附件中导 ...

您好,这边经过调研,有了如下结果:
按照设计,incrementalLoading 会将导入过程拆分为不同的任务,然后逐个执行加载。
在此过程中,incrementalLoading 会监视 UI 事件并尝试阻止发生 UI 行为的加载过程。这样,将为最终用户加载海量数据提供更好的用户体验。
如果没有 DOM,增量加载就没有意义。
所以这里没有dom ,将不会进入loaded方法。建议您如果使用增量加载,还是需要dom元素。

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-25 11:16:26
2#
您直接直接构建

  1. const tempSpread = new GC.Spread.Sheets.Workbook()
复制代码
这个tempSpread不会挂载在dom上。
回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-25 11:21:48
3#
Ellia.Duan 发表于 2023-8-25 11:16
您直接直接构建

这个tempSpread不会挂载在dom上。

试过。tempSpread.fromJSON 会报错
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-25 11:37:29
4#
试下这面这两行代码

  1. const tempSpread = new GC.Spread.Sheets.Workbook()
  2.             tempSpread.fromJSON(spread.toJSON())
复制代码
如果还有问题,建议将spread转换成json上传上来,这边看下

回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-25 15:24:01
5#
Ellia.Duan 发表于 2023-8-25 11:37
试下这面这两行代码

如果还有问题,建议将spread转换成json上传上来,这边看下

spread 是指 Workbook实例对吧;试了下这样子可以。
但是!spread 还是需要宿主dom来创建才行呀。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-25 16:01:28
6#
不太明白您的意思,您现在的问题是什么?
回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-25 17:08:26
7#
本帖最后由 中达安 于 2023-8-25 17:30 编辑
Ellia.Duan 发表于 2023-8-25 16:01
不太明白您的意思,您现在的问题是什么?
  1. const tempSpread = new GC.Spread.Sheets.Workbook()
  2. tempSpread.fromJSON(spread.toJSON())
复制代码
你发的这个代码中 spread 是从哪来的?是这样吗?
  1. const spread = new GC.Spread.Sheets.Workbook(dom节点)
复制代码
那跟最终目的:
有没有api可以不需要宿主dom创建Workbook实例
是不是自相矛盾?


回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-25 17:30:52
8#
本帖最后由 Ellia.Duan 于 2023-8-25 17:32 编辑
中达安 发表于 2023-8-25 17:08
你发的这个代码中 spread 是从哪来的?是这样吗。
跟最终目的:
有没有api可以不需要宿主dom创建Workbo ...

我给您的示例是说 ,目前通过dom元素创建了workbook实例,然后再次创建一个没有挂载在dom节点上的workbook实例,由于fromJSON ,toJSON可以复现场景。通过上述代码可以实现,工作簿的复制,即tempSpread复制了spread。
创建workbook实例 ,new GC.Spread.Sheets.Workbook() 这个括号里面可以传dom节点,也可不传。


我给您的示例可能误导了您,回到问题本身,您的问题是想要获取修改excel数据,那么先要导入excel ,那么为什么您需要fromJSON ? 或者说您fromJSON遇到了什么问题?

回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-25 17:39:18
9#
Ellia.Duan 发表于 2023-8-25 17:30
我给您的示例是说 ,目前通过dom元素创建了workbook实例,然后再次创建一个没有挂载在dom节点上的workboo ...

导入excel只能需要用到 fromJSON
可是这样写会报错:Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'Gw')
  1. const excelIo = new ExcelIO.IO()
  2. const tempSpread = new GC.Spread.Sheets.Workbook()
  3. excelIo.open({导入的excel文件},  tempSpread.fromJSON)
复制代码



回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部