找回密码
 立即注册

QQ登录

只需一步,快速开始

Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-23 18:13:18
11#
肥夏米 发表于 2022-11-23 18:05
能上传一下demo吗?我们测试了一下,导出的还是value
  1. $("#saveSsjson").click(function () {
  2.             var spread2 = new GC.Spread.Sheets.Workbook();
  3.             spread2.fromJSON(spread.toJSON());

  4.             for(let i = 0;i<spread2.getSheetCount();i++){
  5.                 let currentSheet = spread2.getSheet(i);
  6.                 let row = currentSheet.getRowCount(),col = currentSheet.getColumnCount();
  7.                 for(let j = 0;j<row;j++){
  8.                     for(let k = 0;k<col;k++){
  9.                         if(currentSheet.getCellType(j,k) instanceof  GC.Spread.Sheets.CellTypes.ComboBox) {
  10.                             currentSheet.getCellType(j, k).editorValueType(GC.Spread.Sheets.CellTypes.EditorValueType.text);
  11.                         }
  12.                     }
  13.                 }
  14.             }

  15.             funDownload(JSON.stringify(spread2.toJSON()), "test.ssjson");
  16.         });
  17. var funDownload = function (content, filename) {
  18.     console.time('saveSSJSON')
  19.     var eleLink = document.createElement('a');
  20.     eleLink.download = filename;
  21.     eleLink.style.display = 'none';
  22.     // 字符内容转变成blob地址
  23.     var blob = new Blob([content]);
  24.     eleLink.href = URL.createObjectURL(blob);
  25.     // 触发点击
  26.     document.body.appendChild(eleLink);
  27.     eleLink.click();
  28.     // 然后移除
  29.     document.body.removeChild(eleLink);
  30.     console.timeEnd('saveSSJSON')
  31. };
复制代码
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-29 10:53:17
12#
试了一下,设置了celltype为text,getcell取出来的值还是value,所以导出的excel还是value值,只有重新选过这个下拉选项或者setValue(现有方式),导出excel才是text值
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-29 16:02:48
13#
本帖最后由 Ellia.Duan 于 2022-11-29 16:07 编辑

您好,是否可以电话沟通下呢?
这边又看了下您提供的文件,导入您提供的示例json.ssjson文件。然后导出的时候,创建一个空的spread,然后修改editorValueType后,获取到的getValue值是text值。
在之前的回复中,也提供了相关demo。不太确定您这边是如何操作的,以及为什么不能获取到想要的text值。
image.png966977844.png
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-29 16:19:35
14#
不对诶,你用红框框起来的那个打印出来的不是text,那个是value,text就是页面上的中文字,像管理费用,业务招待费这些
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-11-29 17:22:27
15#
按照你给的方法做了个简单的demo,确实是不行的,你看看呢?

sjs-vue-app.zip

246.5 KB, 下载次数: 325

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-29 18:20:40
16#
本帖最后由 Ellia.Duan 于 2022-11-30 11:30 编辑
肥夏米 发表于 2022-11-29 17:22
按照你给的方法做了个简单的demo,确实是不行的,你看看呢?

已复现您的问题,这边会尽快调研下解决方案。[SJS-16070]
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-30 18:37:40
17#
您好,这边经过调研,使用editorValueType修改相应值不能满足您的需求。还是回到问题本身,你说的遍历后修改text值耗时较长,这边是否可以提供一个demo上来,帮您看下您这边为什么用了这么长时间。
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2022-12-2 19:21:34
18#
虽然用editorValueType修改值没有效果,但是您提供了一个非常靠谱的方案,就是把现有json拷贝出一个新的,然后对新的json操作。
所以我们现在用了这个方案,对新拷贝出来的json做setValue操作,结果发现对拷贝的json做setvalue比对原有的json操作,快得不止一点半点,基本是秒出了,也不会影响原来json的数据。所以我们现在采用了这个方案发布了,非常感谢您的思路
我猜对原来的json做sevalue会一边set一边做渲染,所以很慢很慢

评分

参与人数 1金币 +100 收起 理由
Ellia.Duan + 100

查看全部评分

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-12-5 10:10:19
19#
肥夏米 发表于 2022-12-2 19:21
虽然用editorValueType修改值没有效果,但是您提供了一个非常靠谱的方案,就是把现有json拷贝出一个新的, ...

感谢您的反馈,这边一会为您重新编辑下最佳答案。同时为您赠送金币,那本帖就先结帖啦。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部