找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-8 15:12  /   查看:2824  /  回复:3
背景:有小伙伴在使用SpreadJS的时候会有这一个需求,表格在展示的时候需要将表格的内容完全展示,但是导出Excel的时候需要删除某行或者某列。ExcelIO用作导入导出Excel,但是无法删除指定行列导出。

思路:我们在初始化的时候可以创建两个workbook,一个用于数据展示,一个用于导出Excel。我们将展示的workbook1通过toJSON转为ssjson,再通过formJSON导入到workbook2。这时候我们需要的操作(删除行列等)都在workbook2中进行。Excel也是将workboo2导出。

我们来看下代码:
首先,我们创建两个DOM承载两个workbook,并将其中一个隐藏。
  1. <div id="ss" class="sample-spreadsheets"></div>
  2. <div id="ss1" class="sample-spreadsheets" style="display: none;"></div>
复制代码


然后,我们将workbook1的数据toJSON,并在workbook2 fromJSON
  1. spread.fromJSON(jsonData);
  2.     var str = spread.toJSON()
  3.     spread1.fromJSON(str);
复制代码


此时,我们需要删除最后两列导出,只需在workbook2中操作,这部分用户是无感知的
  1. var sheet = spread1.getActiveSheet();
  2.     sheet.deleteColumns(6,2);
复制代码


实现效果如下,页面展示的G和H导出后消失
image.png351249083.png

下载附件即可查看完整代码

删除行导出.zip

9.24 KB, 下载次数: 49

3 个回复

倒序浏览
果果xxxxk
初级会员   /  发表于:2021-12-7 16:54:09
沙发
请问deleteColumns是哪个版本支持的,谢谢&#128591;
回复 使用道具 举报
果果xxxxk
初级会员   /  发表于:2021-12-7 17:08:13
板凳
如果执行两遍sheet.deleteColumns(col, colCount);
是会相应第二次的列的索引吧?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-7 17:55:40
地板
果果xxxxk 发表于 2021-12-7 17:08
如果执行两遍sheet.deleteColumns(col, colCount);
是会相应第二次的列的索引吧?

v9就开始支持了,这是v9的用法
image.png853620910.png

删除之后,后面的行索引也会发生变化,需要重新确定行索引。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部