MrDoc的excel文件导入(Luckysheet)空白行问题问题

今天继续测试MrDoc,虽然写这个文的时候我的MrDoc的文还没整完。。
但是今天这个问题是一个比较独立的模块,就单独说吧。

问题:导入缓慢

我导入一个我的excel文件至系统的时候速度非常慢。
一开始我以为是建立索引很慢,看后台日志,这个索引的时间是0点几秒就完成了。
在这里插入图片描述
后来发现,应该是在上传数据的时候太慢了。
在这里插入图片描述
在这里插入图片描述
一个800K的文件上传后竟然变成了5.1兆,怎么想都觉得奇怪。

省流:修改Luckysheet的初始化参数

找到create_doc里面luckysheet.create的地方。
在这里插入图片描述
添加两个参数:
在这里插入图片描述
PS:照理来说这两个参数应该按照表格的大小来设置,但我发现,当你的数据表行列数比你设定的大的时候,他会自动增加格子。也就是说,其实这个参数应该叫minRowminColumn应该会贴切一些。如果你想要设定一个最小的范围,就设定为row: 1,column: 1,就行了,但是那样很小的表格会比较难看,建议还是可以设定一个最小值。

如果你有兴趣看看我是怎么找到的,可以往下看看,可能可以对你学习MrDoc的源码会有一些小帮助。阅读时间预计5分钟。

寻找:MrDoc使用的表格技术

找到代码中的导入按钮,发现他的id是import-excel
在这里插入图片描述
在整个目录搜索,
在这里插入图片描述
在这里插入图片描述
使用这个id的整个目录和自由两个地方,很快锁定到了文件加载的地方。

在这里插入图片描述
代码中出现了两个关键词,这两个关键词正好在static的目录底下有看到:
在这里插入图片描述
由此,我们知道了MrDoc使用了两个库来完成在线表格的导入:
1.Luckysheet
2.Luckyexcel

通过简单的搜索得知:
Luckysheet是非常强大的表格在线编辑库,Luckyexcel是大佬开发的配套库,用于excel的导入工作。

仔细看上传的负载里面有很多的null,同时,每次导入文件后,表格的长度都变成了莫名其妙的84行,固定是84行。

我一开始以为问题出现在Luckyexcel里面,是不是这个库识别的数据范围不对导致把空行都读了进来呢?

在这里插入图片描述
咱们跟到具体代码位置发现,这个函数就是做了一个读数,然后调用回调的工作,具体他是如何读取的,咱们不管,咱们直接在回调的地方打断点。

在这里插入图片描述
可以明显看到,返回的时候,数据只有三个格子。
在这里插入图片描述
和我的测试文件是吻合的。

在这里插入图片描述
回调出来的地方也和上面的输出吻合。证明问题不是出在Luckyexcel,而是Luckysheet这个库。

破案:初始化参数搞的鬼

在这里插入图片描述
将断点往下打一些,打到create下方,发现,create结束后出现了一个新的属性data而且正好是一个84的数列,那应该是在create的时候做了什么,导致这个data变成了84。

在github的Luckysheet项目中中搜索了一下84,其中有一个参数,一看就有问题了:
在这里插入图片描述
名字如此吻合,应该就是这个的问题了。

寻找Luckysheet的文档,
在这里插入图片描述
初始化的参数里面有这么两个参数,那应该只要修改这两个参数就行了。
在这里插入图片描述
加上这两个参数后,刚刚5M的文件被压缩了一半,虽然还是很大,但是是因为这个表格中设置的表格样式确实比较复杂,能减少近一半已经不错了。
在这里插入图片描述

缓慢的具体原因

本地存储就算文件大道5M应该也不至于时间这么长,查看问题应该出现在sqlite的写入,后续继续解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值