找回密码
 立即注册

QQ登录

只需一步,快速开始

主音吉他手

初级会员

25

主题

105

帖子

292

积分

初级会员

积分
292
主音吉他手
初级会员   /  发表于:2023-9-25 08:59  /   查看:1857  /  回复:9
本帖最后由 主音吉他手 于 2023-9-25 23:02 编辑

做了一个上拉加载行数的操作,这时候如果保存了数据,下次再进来时,会显示上次上拉加载的行数(上拉加载单元格没有任何值,只单纯加载了行)。

怎么处理再次进来时,不需要上拉加载的行,还原成原先无加载操作的时候?
截屏2023-09-25 16.21.42.png

新数据验证显示.xlsx

5.19 KB, 下载次数: 161

9 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-9-25 11:19:36
沙发
您好,SpreadJS的保存操作除了将数据进行保存以外还会对表结构进行保存,对于您的需求,我想您可以尝试两种方式
第一种,用getUsedRange获取被使用的单元格区域,将没使用的后续区域进行行删除
sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.all);// {row: 0, rowCount: 4, col: 0, colCount: 1}

sheet.deleteRows(4, sheet.getRowCount()-4)

第二种,维护一个全局变量,记录每次编辑值的行数,下次加载时将无用的行数删除
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-9-25 14:24:15
板凳
Richard.Huang 发表于 2023-9-25 11:19
您好,SpreadJS的保存操作除了将数据进行保存以外还会对表结构进行保存,对于您的需求,我想您可以尝试两种 ...

第二种,维护全局变量,记录每次编辑值的行数,是不是单元格要有值的情况下才算。
第一种用使用范围的,应该也是单元格有值的情况下,才能获取范围吧?这种用法需要遍历一遍表格数据是否有值吗?
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-9-25 16:06:10
地板
本帖最后由 Richard.Huang 于 2023-9-25 16:08 编辑
主音吉他手 发表于 2023-9-25 14:24
第二种,维护全局变量,记录每次编辑值的行数,是不是单元格要有值的情况下才算。
第一种用使用范围的, ...

您好,您可以尝试一下getUsedRange方法,当您当前工作表存在数据时,他会返回能包含您数据的最小的区域,如下图所示,我直接调用getUsedRange方法返回的{row: 0, rowCount: 7, col: 0, colCount: 4};无需遍历表格数据
image.png353998412.png

对于第二种全局变量,您可以监听EditEnded事件:https://demo.grapecity.com.cn/sp ... ts.Events#editended

当用户编辑完后,您就将当前行数和全局变量进行比较,如果比他大,你就更新全局变量,如果比他小就不更新,然后在恢复时根据你存储的全局变量进行恢复即可,这个全局变量需要您自己来设计维护
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-9-25 16:26:13
5#
Richard.Huang 发表于 2023-9-25 16:06
您好,您可以尝试一下getUsedRange方法,当您当前工作表存在数据时,他会返回能包含您数据的最小的区域, ...

第一种方法,我上传了截图,rowCount数据是空白单元格也算在内吗?
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-9-25 16:44:18
6#
主音吉他手 发表于 2023-9-25 16:26
第一种方法,我上传了截图,rowCount数据是空白单元格也算在内吗?

请问您可以将截图的文件上传一份吗,方便我们为您排查
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-9-25 23:01:34
7#
Richard.Huang 发表于 2023-9-25 16:44
请问您可以将截图的文件上传一份吗,方便我们为您排查

上传了一个Excel表格,这个表格上拉加载到96行,把空白单元格的值也返回了,可以用这个表格测下
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-9-26 11:59:23
8#
本帖最后由 Richard.Huang 于 2023-9-26 12:02 编辑
主音吉他手 发表于 2023-9-25 23:01
上传了一个Excel表格,这个表格上拉加载到96行,把空白单元格的值也返回了,可以用这个表格测下

您好,原因是传入的参数GC.Spread.Sheets.UsedRangeType.all是将所有修改动作都计算在内,比如修改样式,修改值,修改格式等,如果您需要对有值的地方进行统计,建议将参数改为:GC.Spread.Sheets.UsedRangeType.data

sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.data);下面是效果图(您的第六行输入了空字符'',因此也会统计在内)
image.png423486937.png
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-9-26 14:12:20
9#
Richard.Huang 发表于 2023-9-26 11:59
您好,原因是传入的参数GC.Spread.Sheets.UsedRangeType.all是将所有修改动作都计算在内,比如修改样式, ...

好的,那我先用这种方法试试
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-9-26 14:38:02
10#
主音吉他手 发表于 2023-9-26 14:12
好的,那我先用这种方法试试

好的,那么本贴就先结贴了,后续有其他问题的话欢迎随时开新贴提问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部