Wilson.Zhang 发表于 2024-9-9 17:16:43

导出选中行数据

本帖最后由 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用以导入被选中行的导出数据。


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