找回密码
 立即注册

QQ登录

只需一步,快速开始

shiguang

注册会员

7

主题

18

帖子

57

积分

注册会员

积分
57
shiguang
注册会员   /  发表于:2020-12-3 10:06  /   查看:3042  /  回复:3
1金币
如何在sheet里面获得有实际内容的行和列?没有找到相关的api,getLastNonNullRow和getLastNonNullCol在sheet对象中调用不到,实际上应该是有办法获得的,因为在打印的时候是正好打印出有内容的区域的。

现在从spread的fromjosn加载出来的spread后,有很多空白行和空白列,想把这些没用的空包行和空白列删掉,只显示有内容的区域。

最佳答案

查看完整内容

目前只能通过遍历单元格来判断,可以参考附件demo。核心代码如下,您可以参考下:是否影响效率还需要您实际测试下。

3 个回复

正序浏览
shiguang
注册会员   /  发表于:2020-12-3 13:14:27
3#
lynn512 发表于 2020-12-3 11:57
SJS未提供直接判断空白行和空白列的Api,您需要通过遍历的方式来判断出有数据的行、列的边界,然后删除剩余 ...

能提供下大体的思路么?要每个单元格去判断么?感觉效率应该不高吧
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-12-3 11:57:38
2#
SJS未提供直接判断空白行和空白列的Api,您需要通过遍历的方式来判断出有数据的行、列的边界,然后删除剩余无数据的行/列。
回复 使用道具 举报
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-12-3 10:06:46
来自 4#
目前只能通过遍历单元格来判断,可以参考附件demo。核心代码如下,您可以参考下:
  1. var rc = sheet.getRowCount();
  2.                 var cc = sheet.getColumnCount();
  3.                 for(var i=0; i<rc; i++) {
  4.                     for(var m=0; m<cc; m++) {
  5.                         var value = sheet.getValue(i, m);
  6.                         if(value != null) {
  7.                             arri.push(i);
  8.                             arrc.push(m);
  9.                         }
  10.                     }
  11.                 }
  12.                 console.log(arri);
  13.                 console.log(arrc);

  14.                 //删除空白行列
  15.                 var row = arri[arri.length - 1] + 1;
  16.                 var col = arrc[arrc.length - 1] + 1;
  17.                 sheet.deleteRows(row, rc-row);
  18.                 sheet.deleteColumns(col, cc-col);
复制代码
是否影响效率还需要您实际测试下。

删除空白行列.zip

11.58 MB, 下载次数: 116

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部