首页 > 其他分享 >解决layui框架自带的excel导出长数据变科学计数法

解决layui框架自带的excel导出长数据变科学计数法

时间:2023-06-09 14:56:13浏览次数:45  
标签:function layui excel 计数法 && each push

项目中需要导出excel时,如果是大项目、要求高,当然使用第三方插件,或者后台导出是必要的,但是如果是一些小型项目,并且对导出excel样式要求不是很严格的,而且前端框架用的是layui的,layui框架自带的excel导出就成了我们最方便快捷的选择,但是在导出数据时会遇到一个问题:

问题:

layui框架自带的excel导出长数据错误,如:身份证号码、电话号码、时间等,如下图所示:

 

原因:
layui框架自带的导出excel数据默认导出的数据会以数字格式存放,比较长的数据存放后会经过科学计数法加工,从而导致数据错误

解决思路:
改变layui框架数据的存放格式即可

解决方法:
1、在layui/lay/modules/table.js中搜索:d.exportFile

2、将d.exportFile这个函数,用下面内容替换掉:

d.exportFile = function (e, t, i) {
                t = t || d.clearCacheKey(d.cache[e]), i = i || "csv";
                var a = c.config[e] || {},  // 分页按钮
                    l = {csv: "text/csv", xls: "application/vnd.ms-excel"}[i], // meta格式
                    n = document.createElement("a"), // a 标签
                    type = i,
                    meta = l,
                    title = a.title
 
                layui.each(t, function (ks, vs) {
                    var inner = {}
                    layui.each(vs, function (k, v) {
                        if (/^\d{9,}$/.test(v)) {
                            vs[k] = vs[k] + '\t'
                        }
                        inner[k] = vs[k]
                    });
                    t[ks] = inner
                })
                if (r.ie) {
                    var i = [], a = [];
                    layui.each(t, function (t, l) {
                        var n = [];
                        "object" == typeof e ? (layui.each(e, function (e, a) {
                            0 == t && i.push(a || "")
                        }), layui.each(d.clearCacheKey(l), function (e, t) {
                            n.push(t)
                        })) : d.eachCols(e, function (e, a) {
                            a.field && "normal" == a.type && !a.hide && (0 == t && i.push(a.title || ""), n.push(l[a.field]))
                        }), a.push(n.join(","))
                    });
                    var data = i.join(",") + "\r\n" + a.join("\r\n")
                    navigator.msSaveBlob(new Blob(['\ufeff' + data], {type: meta + ';charset=utf-8;'}), title + '.' + type)
                } else {
                    return n.href = "data:" + l + ";charset=utf-8,\ufeff" + encodeURIComponent(function () {
                        var i = [], a = [];
                        return layui.each(t, function (t, l) {
                            var n = [];
                            "object" == typeof e ? (layui.each(e, function (e, a) {
                                0 == t && i.push(a || "")
                            }), layui.each(d.clearCacheKey(l), function (e, t) {
                                n.push(t)
                            })) : d.eachCols(e, function (e, a) {
                                a.field && "normal" == a.type && !a.hide && (0 == t && i.push(a.title || ""), n.push(l[a.field]))
                            }), a.push(n.join(","))
                        }), i.join(",") + "\r\n" + a.join("\r\n")
                    }()), n.download = (a.title || "table_" + (a.index || "")) + "." + i, document.body.appendChild(n), n.click(), void document.body.removeChild(n)}
            },

 

原文链接:https://blog.csdn.net/hwt1070359898/article/details/105155715

标签:function,layui,excel,计数法,&&,each,push
From: https://www.cnblogs.com/ccdr/p/17469195.html

相关文章

  • Layui自带的导出功能在导出身份证时后3位为000
    在使用Layui自带的导出功能进行数据导出操作时,会发现身份证号码会出现000的情况。 最开始在网上找资料,有人说要下载Excel的插件包也有说要修改js文件。搞半天还是不行。其实一行代码就ok,废话不多说自己上代码:  只需要在获取数据时加上以下代码即可 {field:'identity'......
  • python操作excel之 openpyxl
    python操作excel在我们的工作中经常会用到,操作用例读取对应信息进行接口自动化pythonExcel库对比图片我们发现可以操作excel的库有很多种,我们常用的就三种方法第三方库xlwt/xlrd:用于生成和读取比较老的excel文件,比如xls格式,最大行数限制为65536行。其中xlrd是读excel,xlwt是写exc......
  • Java利用xml将大批量数据导出到excel的一个方法
    笔者在Java开发中常常会遇到将数据库数据导出到Excel的要求,比如在我的一个项目中,客户要求所有查询结果都可以导出到Excel,对于数据量不大的(几万条),这比较容易实现,但对于数据量比较大的(几十万及以上,具体要看导出内容的字段个数和长短),则在数据库查询和生成excel文件上都会有麻烦。......
  • java jxl创建/读取/修改Excel 操作Excel
    创建Excelpackagetest1;importjava.io.File;importjava.io.IOException;importjxl.Workbook;importjxl.write.Label;importjxl.write.WritableSheet;importjxl.write.WritableWorkbook;importjxl.write.WriteException;importjxl.writ......
  • elementUI实现excel导出文件
    需要导入依赖npminstall-Sfile-saverxlsxnpminstall-Dscript-loaderhtml页面:<el-buttonicon="el-icon-document"style="float:right;margin-top:5px;margin-left:5px;"circlesize="mini"@click="doExportExcel">&......
  • ExcelPackage操作Excel的常用方法
    游戏开发中最常用的工具应该当属Excel了,而Excel在数据量比较大,或者多张表进行关联的时候操作比较繁琐,偶尔会有一些工具需要,减化上述的一些操作,提升工作效率。最开始想使用Node.js,发现二个问题,Github上第三方库,在保存Excel的时候会将格式给丢掉。找来找来,发现C#的Epplus比较......
  • 【20230607】【用Python让Excel飞起来】 第一章 python 快速上手 I
    001安装Anacondaanaconda.com直接下载,然后安装记得安装的时候将path和link.py点上,不然回头去配置环境变量有一些麻烦如何判断成功安装在CMD中输入conda-V即可查看002安装配置pycharm直接安装即可,官网下载,然后安装注意pycharm的pro版本是收费的,edu邮箱可以免费1年......
  • Python&Excel办公自动化
    操作工作簿01新建一个excel工作簿#2023-4-17importxlwingsasxw#启动excel,但不新建工作簿app是什么,app是excel程序本身app=xw.App(visible=True,add_book=True)#新建一个工作簿workbook=app.books.add()#保存新建的工作簿workbook.save('D:\python_data/tes......
  • BOS EDI 项目 Excel 方案开源介绍
    BOSEDI&Excel方案简介本文将继续分享BOS示例工作流:使用Excel端口和Email端口生成一系列文件,完成与BOS的EDI通信。下载工作流  下载示例文件 BOSEDI到Excel示例流具有预配置的端口,用于从BOS的EDI集成规范转换以下交易集:1.4905物料需求计划,BOS->企业2.4913发货通......
  • Python pandas库操作 excel
    Pythonpandas库操作excel特别提示:pandas库是基于numpy库的软件库,因此安装Pandas之前需要先安装numpy库。默认的pandas不能直接读写excel文件,需要安装读、写库即xlrd、xlwt才可以实现xls后缀的excel文件的读写,要想正常读写xlsx后缀的excel文件,还需要安装openpyxl库。数据......