找回密码
 立即注册

QQ登录

只需一步,快速开始

Wilson.Zhang

超级版主

20

主题

1218

帖子

1692

积分

超级版主

Rank: 8Rank: 8

积分
1692
Wilson.Zhang
超级版主   /  发表于:2024-9-9 17:16  /   查看:44  /  回复:0
本帖最后由 Wilson.Zhang 于 2024-9-9 17:32 编辑

SpreadJS自定义的序列化格式.ssjson本质上是JSON数据格式,可以选择工作簿内任意一张Worksheet导出为.ssjson文件,或者导出整个Workbook为.ssjson文件。也就是说,SpreadJS原生支持的导出接口的最小导出单位为Worksheet。一般情况下,业务需要也多是导出工作簿,原生API足以支撑大部分导出相关的业务场景。但是,总有一些剑走偏锋的业务场景,比如需要导出Workbook内的部分Worksheet,更有甚者只想要导出Worksheet内的部分行列数据。很显然,原生API不支持指定多张Worksheet导出,也不支持导出Worksheet内的部分行或列。那么,还有法子吗?谋事在人嘛,已知导出.ssjson文件的最小文件单位是Worksheet,那是否可以将那几张期望导出的Worksheet集成在一张Worksheet内呢?又可否将目标行或列数据按照原来的排布结构装填在单独的新Worksheet内呢?这样一来,便可以合理利用原生导出API将数据导出为.ssjson文件。

接下来能否成事则在天命,幸运的是,这个方案本就依托于导出功能的设计机制而生,必然可行。以导出选中行的数据为例介绍方案:
1. 注册SelectionChanged事件或RowChanged事件,记录每次选中的行。
2. 自定义导出行按钮,定义其逻辑:
2.1. 新建Worksheet。
2.2. 读取选中行信息后将行内单元格数据及样式、公式等复制粘贴至该Worksheet。
2.3. 导出该Worksheet为.ssjson文件,导出成功与否都删除该Worksheet。
如动图1所示,在Worksheet中装填了数据,且为部分行设置了不同的样式,点击“导出选中行数据”后可看到Workbook中新增了一个Worksheet用以导入被选中行的导出数据。

导出选中行.gif

图1. 导出选中行

这一招移花接木,大象遁形即可导出选中行数据为.ssjson文件。虽然导出API不支持指定导出行数据,但是可以合理利用已经存在的导出机制创造导出条件,这便是铁人精神。更多详情,请见附件demo。

导出选中行(Designer版本).html

6.27 KB, 下载次数: 1

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部