请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

一博科技

中级会员

54

主题

153

帖子

607

积分

中级会员

积分
607
一博科技
中级会员   /  发表于:2022-6-22 14:33  /   查看:2793  /  回复:7
50金币
本帖最后由 一博科技 于 2022-6-22 15:01 编辑

场景:在一个详情里面,后台对多个Excel的某些内容进行处理后形成一个表格,此时想要看原来的Excel,需要每一行都加一个对应Excel的入口;
如果一个详情有200条数据,由4个Excel的数据组成的,那也要点200次核对每一条数据,故而带来额外的工作量。
需求:将组成详情的一或多个甚至十几、几十个的Excel抽取出现在详情的原始数据,组成新的Excel渲染到弹层;
问题:实现遍历所有出现的Excel表头行及行数据剪切(包括样式)到新的<gc-spread-sheets-designer>展示;
如附件:
详情数据包含:demo1.xlsx、demo2.xlsx、demo3.xlsx
demo1:{
list:[3, 4, 5, 6, 8, 9],
start:1
}
demo2:{
list:[5, 6, 7, 8, 9, 12, 13, 24, 25, 26, 27, 33, 62, 64, 65, 66, 71, 72],
start:1
}
demo3:{
list:[7, 8, 12, 13, 14, 22, 24, 25, 26, 27, 32, 33, 39, 40],
start:4
}
每个demo的list就是出现在详情的行号,需要剪切对应行号的内容到新的<gc-spread-sheets-designer>展示


start则为表头开始的行,
最终形成在一个Excel里能看到三个Excel的内容,如图:


谢谢。



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

你好,请参考附件的demo实现。附件的demo,演示了如何将三个工作簿合并成一个工作簿,并且将指定的区域复制到对应的表单上。代码直接写死了复制的区域,如需按照list来复制,请根据demo的思路做进一步开发。 另外,复制少量的工作簿是比较轻松的,如果有大量的工作簿需要合并,有可能会出现性能问题。

7 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-6-22 14:33:59
来自 2#
你好,请参考附件的demo实现。附件的demo,演示了如何将三个工作簿合并成一个工作簿,并且将指定的区域复制到对应的表单上。代码直接写死了复制的区域,如需按照list来复制,请根据demo的思路做进一步开发。
另外,复制少量的工作簿是比较轻松的,如果有大量的工作簿需要合并,有可能会出现性能问题。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
一博科技
中级会员   /  发表于:2022-6-23 15:33:20
3#
本帖最后由 一博科技 于 2022-6-23 16:40 编辑
Derrick.Jiao 发表于 2022-6-22 16:30
你好,请参考附件的demo实现。附件的demo,演示了如何将三个工作簿合并成一个工作簿,并且将指定的区域复制 ...

尝试了一下有几个问题:
1、后台Excel渲染指定的sheet,并非都是下标0,有返回名字;
2、可不可以直接复制指定的行到第一格表格

补充1、比如说,第一个文件可能存在多个sheet,要打开这个文件然后指定sheetName:
excelIo.open(blob, function (json) {
  let workbookObj = json;
  spread.fromJSON(workbookObj);
  spread.setActiveSheet(data[i].sheetName);
但是现在的方法是temp.fromJSON(data),直接用这个文件流就复制到了sheet,
这个怎么优化?



回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-6-23 17:06:29
4#
一博科技 发表于 2022-6-23 15:33
尝试了一下有几个问题:
1、后台Excel渲染指定的sheet,并非都是下标0,有返回名字;
2、可不可以直接 ...

1、可以通过var sheet1 = spread.getSheetFromName("Sheet2");来根据表单名称获取表单

2、所有的excel表单合并到了同一个工作簿之后,是可以通过demo的命名的方式复制区域到指定位置
回复 使用道具 举报
一博科技
中级会员   /  发表于:2022-6-24 16:40:53
5#
Derrick.Jiao 发表于 2022-6-23 17:06
1、可以通过var sheet1 = spread.getSheetFromName("Sheet2");来根据表单名称获取表单

2、所有的excel ...

固定指向Excel并只有一个sheet的时候能合并,改成动态接收的Excel还是没法var sheet1 = spread.getSheetFromName("Sheet2")获取指定的sheet。
返回的是个文件流,可以帮忙写个demo吗?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-6-24 18:04:03
6#
一博科技 发表于 2022-6-24 16:40
固定指向Excel并只有一个sheet的时候能合并,改成动态接收的Excel还是没法var sheet1 = spread.getSheetF ...

无论是否表单上有一个sheet还是多个sheet都是可以正常合并,多sheet可以通过遍历sheetCount来拿到每一个sheet包括sheet的内容以及名称,需要复制则也是遍历执行对应的命令。

如需读取文件,可以参考这篇帖子的demo
https://gcdn.grapecity.com.cn/fo ... hread&tid=37389
回复 使用道具 举报
一博科技
中级会员   /  发表于:2022-6-28 09:52:36
7#
Derrick.Jiao 发表于 2022-6-24 18:04
无论是否表单上有一个sheet还是多个sheet都是可以正常合并,多sheet可以通过遍历sheetCount来拿到每一个s ...

行。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-6-28 11:46:48
8#

那这边就先结贴了,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部