找回密码
 立即注册

QQ登录

只需一步,快速开始

肥夏米
初级会员   /  发表于:2022-10-19 18:53  /   查看:3051  /  回复:18
本帖最后由 Lynn.Dou 于 2023-1-10 16:39 编辑

参考这个帖子:https://gcdn.grapecity.com.cn/fo ... 32955&extra=&page=2

需求在里面提的很清楚了,我们也按照给出的方案实现了需求。
但是并不完美,因为这会导致导出变得非常非常慢
数据量大概300多条,使用combobox的列有5列,导出时需要10几分钟才能导出文件。导出文件结束后由于需要再把text换回成value,这个动作又花了10几分钟。这样一个导出功能需要30几分钟。。。

个人理解,不管默认存储的是value, 还是text, 只要是导出应该只会是导出text吧,这个能做成默认导出成text吗?就不用我们转来转去了
或者说:editorValueType 的配置可不可以动态实现。不做导出前都设置成true,点了导出就设置成text然后导出结束后再换回value?





************************************************最佳答案********************************************

把现有json拷贝出一个新的,然后对新的json操作。
  1. var spread2 = new GC.Spread.Sheets.Workbook();

  2. spread2.fromJSON(spread.toJSON());
  3. //遍历spread2中combobox单元格,对其值进行转换。
复制代码




18 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-20 18:00:46
沙发
您好,
您试下在修改前后加上  suspendPaint/resumePaint ,看是否有所优化,具体请参考学习指南:
https://demo.grapecity.com.cn/sp ... ook/painting/purejs
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-16 16:20:47
板凳
试过了,还是很慢,没有什么变化
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-16 16:21:56
地板
导出就不能固定用text嘛,我们被业务投诉了好多次,就因为导出太慢
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-16 18:16:45
5#
您问题中提到了数据量大概300多条,使用combobox的列有5列,导出时需要10几分钟才能导出文件。
这个导出时间确实有点长,您是否可以上传下您的ssjson文件或者excel文件,我们具体调研下来给您一个优化方案。
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-17 11:01:01
6#
上传了附件,含ssjson和excel,帮忙尽快看看哈

示例.zip

1.17 MB, 下载次数: 453

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-17 13:45:10
7#
肥夏米 发表于 2022-11-17 11:01
上传了附件,含ssjson和excel,帮忙尽快看看哈

您好,这边上传了您的ssjson文件,然后进行了导出操作,导出操作不到1秒,具体见下动图。


请问您这边做了什么操作,导出需要十几分钟呢?
导入导出.gif
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-18 11:46:42
8#
那些用到combobox的列导出来都是value, 而不是text吧,我们现在要求导出text,但是保存的需要是value,所以默认的配置editorValueType  设置成value了,但是导出又需要是text。所以导出前做了一次转换,把value转成text导出后,再转回value,就是这两个转换特别耗时。
如果保存value,导出也是value,那没有任何问题
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-18 16:55:34
9#
您好,这边为您重新想了一个方案:
导出的时候,新建一个空的工作簿Spread2
然后将spread.toJSON导出的json ,使用spread2.fromJSON接收以下,这样子实现了spread2复制了spread。如下图所示:
image.png874316406.png
然后再其Spread2中修改下拉框为text,最后进行导出,这边测试导出时间很短,只用了31豪秒。
image.png117767638.png
然后将导出的ssjson导入,发现此时已经变为了text
image.png618145446.png
通过上述流程,就实现了导出text 的ssjson文件,如果想要value的ssjson文件,可以直接通过spread.toJSON进行导出。
这样子就实现了两种文件。
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-23 18:05:59
10#
Ellia.Duan 发表于 2022-11-18 16:55
您好,这边为您重新想了一个方案:
导出的时候,新建一个空的工作簿Spread2
然后将spread.toJSON导出的js ...

能上传一下demo吗?我们测试了一下,导出的还是value
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部