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

news2024/11/18 2:49:32

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

文章目录

  • 问题:导入缓慢
  • 省流:修改Luckysheet的初始化参数
  • 寻找: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的写入,后续继续解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis—过期策略和内存淘汰策略】

Reids过期策略 设置过期时间 expire <key> <n>&#xff1a;设置 key 在 n 秒后过期&#xff0c;比如 expire key 100 表示设置 key 在 100 秒后过期&#xff1b; pexpire <key> <n>&#xff1a;设置 key 在 n 毫秒后过期&#xff0c;比如 pexpire ke…

二极管与三极管

能带Energy band 能带理论是用量子力学的方法研究固体内部电子运动的理论。 能带理论的作用&#xff1a;说明了导体与绝缘体、半导体的区别所在&#xff1b;解释了晶体中电子的平均自由程问题。 根据电子填充的情况&#xff0c;能带分为传导带&#xff08;简称导带&#xff0c…

(二十二)Vue之脚手架的使用

文章目录基本使用脚手架文件结构分析mian.js文件关于不同版本的Vue关于render函数关于vue.config.js配置文件关于index.html文件演示程序Vue学习目录 上一篇&#xff1a;&#xff08;二十一&#xff09;Vue之单文件组件 Vue 脚手架是 Vue 官方提供的标准化开发工具&#xff0…

数据库,计算机网络、操作系统刷题笔记17

数据库&#xff0c;计算机网络、操作系统刷题笔记17 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

圣诞节,来棵Golang的圣诞树吧

一、前言 2022年的圣诞到啦&#xff0c;不知道大家都&#x1f411;了吗&#xff01;博主已经挺进了决赛圈&#xff0c;希望可以继续稳如老狗&#xff01;本来今天是想继续深挖一下git&#xff0c;但打开博客看到这个圣诞活动&#xff0c;还可以赢徽章&#xff0c;那我肯定要把…

C++基础之提高5

C提高编程 本阶段主要针对C泛型编程和STL技术做详细讲解&#xff0c;探讨C更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具&#xff0c;大大提高复用性 例如生活中的模板 一寸照片模板&#xff1a; PPT模板&#xff1a; 模板的特点&#xff1a; 模板不可以直…

Maven 运行性期间不报错

Maven 运行性期间不报错目录概述需求&#xff1a;设计思路实现思路分析1.正确引入maven问题2.编译maven 无问题3.运行出错了参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a…

第14章_MySQL事务日志

第14章_MySQL事务日志第14章_MySQL事务日志1. redo日志1.1 为什么需要REDO日志1.2 REDO日志的好处、特点1.3 redo的组成1.5 redo log的刷盘策略1.6 不同刷盘策略演示1.7 写入redo log buffer 过程1.8 redo log file1. 相关参数设置2. 日志文件组3. checkpoint1.9 redo log小结2…

python基础语法——变量和变量类型

文章目录变量命名规则使用变量和修改变量变量的类型整数 int浮点数 float字符串 string布尔动态类型特征变量命名规则 软性规则&#xff1a; 1.给变量命名的时候&#xff0c;尽量使用描述性的单词来表示&#xff0c;尽量通过名字来表现出变量的作用 2. 当我们使用一个单词描述…

实战讲解时区处理基于SimpleDateFormat和LocalDateTime

1 缘起 最近在做海外的项目&#xff0c; 需要根据时区转换时间&#xff0c;起初&#xff0c;项目使用的时区格式为{area}/{city}&#xff0c; 可直接使用SimpleDateFormat处理&#xff0c;后面由于要添加其他地区&#xff0c; 统一将时区改为UTC格式&#xff0c;此时&#xff…

AndroidQ兼容性适配指南

AndroidQ Android 10 中的隐私权变更 隐私权变更受影响的应用缓解策略✅分区存储 针对外部存储的过滤视图&#xff0c;可提供对特定于应用的文件和媒体集合的访问权限访问和共享外部存储中的文件的应用使用特定于应用的目录和媒体集合目录 了解详情✅增强了用户对位置权限的控…

Viewer.js点击按钮放大图片用法

1、Viewer.js点击按钮放大图片用法 <div onclick"getHideBig(hide_img_weight1)" id"btn_img_weight1">查看图片</div> <img src"tibet-3.jpg" id"hide_img_weight1" style"display: none;"/><script…

异常的认识 -(java)

文章目录前言1. 什么时异常&#xff1f;2. 异常的分类2.1 运行时异常/非受查异常2.2 编译时异常/受查异常3. 处理异常3.1 抛出异常3.2 声明异常3.3 try catch处理异常总结✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来&#xff01; 编程真是一件很奇妙的东西。你只是…

java 之 git 手把手教学

什么是git? Git是一个分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件&#xff08;Java类、xml文件、html页面等&#xff09;&#xff0c;在软件开发过程中被广泛使用。 学完之后能干什么&#xff1f; Git 简介 Git 代码托管服务 Git 常用命令 git add前…

C++:STL:常用容器(上):vector

1&#xff1a;vector基本概念 功能&#xff1a;vector 数据结构和数组非常相似&#xff0c;也称为 单端数组. vector 与普通数组区别&#xff1a; 1&#xff1a; 数组是静态空间&#xff0c;而 vector 可以动态扩展 2&#xff1a; 动态扩展&#xff1a;并不是在原空间之后接新…

Java 集合学习笔记:HashMap - 迭代器

Java 集合学习笔记&#xff1a;HashMap - 迭代器iteratorsHashIteratorhasNextnextNoderemoveKeyIteratorValueIteratorEntryIteratorspliteratorsHashMapSpliteratorgetFence 获取拆分器的右边界estimateSize 估计剩余元素的个数KeySpliterator1. trySplit 尝试拆分2. forEach…

AQS学习

1.1 AQS 简单介绍 AQS 的全称为&#xff08;AbstractQueuedSynchronizer&#xff09;&#xff0c;这个类在 java.util.concurrent.locks 包下面。 AQS 是一个用来构建锁和同步器的框架&#xff0c;使用 AQS 能简单且高效地构造出应用广泛的大量的同步器&#xff0c; 比如我们提…

多协议标签交换MPLS(计算机网络-网络层)

目录 MPLS 的优势 MPLS 首部的位置与格式 MPLS 首部的位置与格式 MPLS 转发等价类 MPLS 的优势 MPLS 的真正优点在于它的流量管理能力&#xff1a;提供沿多条路径转发分组的能力&#xff0c;并能灵活地为某些流量指定其中的一条路径 这种能力被称为显示路由&#xff0c;其…

占道经营出店摆摊监测识别 python

占道经营出店摆摊监测识别通过python基于yolov7网络架构深度学习模型&#xff0c;对现场画面中检测到出店摆摊违规经营或者流动商贩占道经营时&#xff0c;立即抓拍告警同步后台。OpenCV基于C实现&#xff0c;同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV…

【Django】第四课 基于Django超市订单管理系统开发

概念 本文在上一文之上&#xff0c;针对管理员&#xff0c;经理&#xff0c;普通员工身份的用户操作订单管理模块功能。 功能实现 该功能也是业务功能模块&#xff0c;管理员不具备操作权限&#xff0c;普通员工需要对超市所合作的供应商进行进货&#xff0c;因此普通员工可…