找回密码
 立即注册

QQ登录

只需一步,快速开始

汇新泓博
初级会员   /  发表于:2022-10-30 16:13  /   查看:1115  /  回复:4
1金币
实际表格打开四百多行,用spreadjs导入显示行数过百万行,导致卡顿。是什么导致的  如何解决这个问题。或者只导入有值的行数
image.png584156493.png image.png77434081.png

2019-2022年配网工程建设情况统计表 - 兴安.xlsx

103.48 KB, 下载次数: 23

最佳答案

查看完整内容

方案1,在设计表单时避免此问题 从文件来看,猜测是先做了整列(如 K列)数据验证,然后取消了K列前几行的验证, 所以在导入SJS时,数据验证区域显示如上图所示。 从此角度入手,在设计表单时避免上述操作步骤设置数据验证,而是选择单元格区域(如 K6:K416)进行设置。 方案2: 在导入文件时开启增量加载, 如果是使用的designer,可以监听FileLoaded事件, 在导入文件之后获取有效区域的行数,然后删除多余行: 如果 ...

4 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-30 16:14:00
来自 5#
方案1,在设计表单时避免此问题
从文件来看,猜测是先做了整列(如 K列)数据验证,然后取消了K列前几行的验证,
所以在导入SJS时,数据验证区域显示如上图所示。
从此角度入手,在设计表单时避免上述操作步骤设置数据验证,而是选择单元格区域(如 K6:K416)进行设置。

方案2:
在导入文件时开启增量加载,
如果是使用的designer,可以监听FileLoaded事件,
在导入文件之后获取有效区域的行数,然后删除多余行:
  1. sheet.suspendPaint();
  2. var usedRange = sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.data);
  3. var usedrc = usedRange.rowCount;
  4. sheet.deleteRows(usedrc, sheet.getRowCount() - usedrc);
  5. sheet.resumePaint();
复制代码
如果是使用的SpreadJS,自己写的导入文件按钮,那么可以在执行fromJSON方法后再执行上述代码。

方案3:
如果使用的designer,则可以监听FileLoading事件,获取加载的json数据,并修改rowCount(根据json文件中sheet里的dataTable判断),然后执行fromJSON加载。
如果使用的SJS,则可以在ExcelIO.open方法内获取加载的原始json,后续步骤如上。
  1. designer.bind(GC.Spread.Sheets.Designer.Events.FileLoading, (event, data) => {
  2.                 var json = data.data;
  3.                 var sheet1 = json.sheets["Sheet1"];
  4.                 if (sheet1.rowCount == 1048576) {
  5.                     json.sheets["Sheet1"].rowCount = 400;
  6.                 }
  7.             });
复制代码

image.png871597289.png
注:该方案需要修改原始json,而不是使用的public API。原则上不建议这样操作,不保证后续版本的兼容性,可作为workaround方案参考。

回复 使用道具 举报
有点东西悬赏达人认证
初级会员   /  发表于:2022-10-30 18:49:45
2#
原因是表单重存在两个大范围的数据验证,在excel中,将其删除重新添加或者调整区域即可。

image.png556542357.png

这是调整后导入的效果
image.png245143126.png

2019-2022年配网工程建设情况统计表 - 兴安.xlsx.zip

92.86 KB, 下载次数: 20

回复 使用道具 举报
汇新泓博
初级会员   /  发表于:2022-10-31 09:18:31
3#
有点东西 发表于 2022-10-30 18:49
原因是表单重存在两个大范围的数据验证,在excel中,将其删除重新添加或者调整区域即可。

这个如何调整,或者避免这个情况
回复 使用道具 举报
汇新泓博
初级会员   /  发表于:2022-10-31 09:23:00
4#
有点东西 发表于 2022-10-30 18:49
原因是表单重存在两个大范围的数据验证,在excel中,将其删除重新添加或者调整区域即可。

如何导入后删除表格中所有验证。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部