找回密码
 立即注册

QQ登录

只需一步,快速开始

armgong
金牌服务用户   /  发表于:2017-7-17 16:24  /   查看:4685  /  回复:9

采用如下代码 import 附件中的文件,速度较慢,请问能不能在导入过程中显示进度条或者提示?
    function ImportFile() {        var excelFile = document.getElementById("fileDemo").files[0];        excelIO.open(excelFile, function (json) {            var workbookObj = json;           workbook.fromJSON(workbookObj);        }, function (e) {            console.log(e);        });    }


工作簿1.xlsx

1.26 MB, 下载次数: 260

9 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-17 17:51:46
沙发
您好,您可以在open方法中增加类似loading效果的相关代码。
比如:
function ImportFile() {
      //此处添加开始loadding效果的代码        
      var excelFile = document.getElementById("fileDemo").files[0];      
      excelIO.open(excelFile, function (json) {            
            var workbookObj = json;
            workbook.fromJSON(workbookObj);
            //此处添加关闭loadding效果的代码      
      }, function (e) {            
           console.log(e);
           //此处添加关闭loadding效果的代码      
      });   
}

loadding效果网上有很多实现的方法,用CSS或者第三方组件都可以实现。
原理大概就是绘制一个遮罩div,并有loadding的动画效果,然后结束后将其隐藏或者销毁。
回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2017-7-19 18:21:30
板凳
加载耗时较长的问题有办法优化么?测了一下需要80多秒才能例子里边的数据,这个有点太慢了吧,有没有办法加快?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-20 10:07:17
地板
您好,我们这边测试了一下。您的excel导入耗时大约6秒左右,并没有您所说的80秒,以下是测试截图:
image.png300824584.png
控制台中的两个时间是开始导入与结束导入的毫秒数,之间的差值即为耗时毫秒数,大约6000+毫秒。
另外附上测试demo,您可以进行参考

另外想问一下,上传的Excel中存在很多RANDBETWEEN公式,请问真是的数据也是这样吗?这个公式多了也会影响部分性能。

import.zip

1.03 KB, 下载次数: 216

回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2017-7-20 10:17:54
5#
真实的案例比这个复杂的多,4000行 50列 非常复杂的公式,待会我在测试一下,另外我用的浏览器是IE11,不知道这个有没有影响
回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2017-7-20 10:43:14
6#
使用了你们的例子做了 测试在不同浏览器下 表现如下:

1 IE11   24秒  (80秒是在调试模式下,现在都统一改到了不调试),请帮忙确认一下,能否优化
2 chrom 7秒
3 firefox 7秒

我的 测试环境 是 Jquery 1.11.3 spreadjs 10.1.0 , 另外看到你们现在有 spreadjs 10.1.4 版本了,可否邮件告知下载地址
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-20 17:23:44
7#
您好,IE确实在的很多情况下比chrome 要慢,您提交的这个demo我们也反馈开发了,看还有没有进一步优化的空间。
V10.2 下周就发了,到时候您直接升级最新版。
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-7-21 11:13:02
8#
本帖最后由 CCKan 于 2017-7-21 15:18 编辑

你好,慢主要是因为公式的原因,你这个文件中的公式都是 RANDBETWEEN, 而 RANDBETWEEN 是一类特殊的公式,在计算的时候比普通的公式慢,你改成 "SUM(1,2)" 这种就会快很多了。
公式的性能问题有很多原因,所以你最好能够提供真实的文件,这样我们才好针对性的对性能做优化。

如果你导入的 Excel 文件是标准的 Excel 文件,由于 Excel 文件即保存了公式,又保存了计算的结果,所以导入的时候可以不让 SpreadJS 计算公式:json.noRecalc = true;
spread.fromJSON(json);
回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2017-7-22 17:22:45
9#
谢谢,json.noRecalc = true; 这个很管用,因为真正的计算不用用spreadjs的后台我们用别的控件计算的,前台只需要展示值和对应的公式。
真实的案例提供可能有一定的难度,因为里边有很多数据需要提前修改。如果还有问题的话,我们会把修改过的数据真实的案例发给你们,供测试用。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-24 09:06:37
10#
armgong 发表于 2017-7-22 17:22
谢谢,json.noRecalc = true; 这个很管用,因为真正的计算不用用spreadjs的后台我们用别的控件计算的,前台 ...

不客气,有什么问题随时再问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部