找回密码
 立即注册

QQ登录

只需一步,快速开始

winningspreadjs

金牌服务用户

6

主题

29

帖子

107

积分

金牌服务用户

积分
107
winningspreadjs
金牌服务用户   /  发表于:2022-12-28 09:31  /   查看:1487  /  回复:5
1金币
本帖最后由 Clark.Pan 于 2023-1-10 13:42 编辑

导入文件的时候,使用GC.Spread.Excel.IO() 获取的文件json,只保留指定的sheet数据写入原有excel里,例如文件导入的有1-22个sheet页,但是我只想取第9个sheet数据写入到excel里,这种应该怎么实现呢

最佳答案

查看完整内容

延续上述思路,在临时spread中加载新excel文件后,获取目标sheet json,然后将想替换的sheet重新fromJSON即可。 这样只会影响替换sheet,其余sheet不受影响。

5 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-28 09:31:05
来自 4#
延续上述思路,在临时spread中加载新excel文件后,获取目标sheet json,然后将想替换的sheet重新fromJSON即可。
这样只会影响替换sheet,其余sheet不受影响。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-28 10:25:11
2#
本帖最后由 Lynn.Dou 于 2022-12-28 10:27 编辑

您好,下方思路供参考:
可以将整体导入到一个临时spread后,再获取到这个sheet的json导入当前的spread。示例代码如下:
  1. var spreadTemp = new GcSpread.Sheets.Spread();
  2. spreadTemp.fromJSON(json);
  3. var sheetTemp = spreadTemp.getSheet(8)
  4. //获取到此sheet的json
  5. var sheetJSON = JSON.strifly(sheetTemp.toJSON())
  6. var sheet = new GC.Spread.Sheets.Worksheet();
  7. newSheet.fromJSON(JSON.parse(sheetJSON));
  8.          sheet.name("The added sheet");
  9.          spread.addSheet(1, sheet);
复制代码
或者整体导入spread之后,再删除多余的sheet,只保留sheet9。

回复 使用道具 举报
winningspreadjs
金牌服务用户   /  发表于:2022-12-28 13:51:59
3#
Lynn.Dou 发表于 2022-12-28 10:25
您好,下方思路供参考:
可以将整体导入到一个临时spread后,再获取到这个sheet的json导入当前的spread。 ...

嗯嗯,感谢回复,不过有一点出入,我们需求想实现的是,一开始渲染出1-22的sheet 的 excel,在这基础上导入新的excel,但是不想全部替换,只替换指定的sheet,其余sheet保持和原有excel一致
回复 使用道具 举报
winningspreadjs
金牌服务用户   /  发表于:2022-12-28 15:22:57
5#
本帖最后由 winningspreadjs 于 2022-12-28 15:25 编辑

image.png529139708.png 当我这样导入替换数据的时候没有问题(全部文件无差别sheet替换)
image.png698752135.png   当我替换指定sheet的时候 替换的sheet出现样式错乱,没有被替换的sheet是正常的
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-28 17:00:04
6#
猜测是替换sheet里存在原spread级别的命名样式,所以直接替换导致样式混乱。
这篇文章中可以了解下:
https://gcdn.grapecity.com.cn/fo ... hread&tid=93624
建议您直接提供一个可复现此问题的demo,这边在代码基础上调研下具体原因。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部