layui全部导出

以下操作已录制B站的视频
点击查看视频

目录
1.前言
2.全部页导出
3.代码实例
4.页面展示

一、前言

开发工具:Visual Studio2019

前端框架:layui

使用了layui自带的导出功能后,真的是超级便捷,但是只能导出当前页的数据,又研究了下文档,发现还有【导出任意数据】的功能,也就意味着可以导出全部页的数据,几句代码就能搞定,简直不要太爽。代码和效果图会在最后贴出。

二、全部数据导出

Layui文档中写到,尽管 table 的工具栏内置了数据导出按钮(单页导出),但有时你可能需要通过方法去导出任意数据,那么可以借助以下方法:

语法:table.exportFile(id, data, type)

一句代码搞定全部页导出,真的是大大的提高了开发人员的开发效率!简直了,爽歪歪~

三步走:写个导出按钮,编写导出点击事件,调用table的exportFile方法。

大功告成!导出时将会导出全部页的数据。

dataList:将要导出的数据

xls:导出的excel的格式
在这里插入图片描述

三、代码实例

1. 以下是json静态数据,文件名export.json

json文件可能会有中文乱码问题 需要记事本打开 然后另存为带有BOM的UTF-8格式

在这里插入图片描述

[
  {
    "name": "张三",
    "class": "高三",
    "scoreMath": "100"
  },
  {
    "name": "李四",
    "class": "高三",
    "scoreMath": "99"
  },
  {
    "name": "王五",
    "class": "高三",
    "scoreMath": "98"
  },
  {
    "name": "赵六",
    "class": "高三",
    "scoreMath": "97"
  },
  {
    "name": "七七",
    "class": "高三",
    "scoreMath": "96"
  }
]

2. 以下是web窗体页面,文件名export.aspx

复制代码后 layui的css和js重新引用下,因为我的路径和你的路径大概率是不一样的

jquery也需要重新引用下 理由同上

功能描述:

引用成功后 从json文件中获取数据,展示在页面中

添加导出按钮 点击导出 导出所有的数据

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>导出测试</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <!--引入CSS文件-->
    <link href="layui/css/layui.css" rel="stylesheet" />
    <style>
        /*导出几个按钮放在左边 好看点*/
        .layui-table-tool-self {
            position: absolute;
            top: 10px;
            left: 17px;
        }

        /*筛选列的弹框调整*/
        .layui-table-tool .layui-table-tool-self .layui-table-tool-panel {
            left: auto;
            right: -67px;
        }
 
        /*导出字体大小调整*/
        .iconfont {
            font-size: 13px;
        }
    </style>
</head>
<body>
    <form class="layui-form" runat="server">
        <div class="layui-fluid">
            <div class="">
                <div class="layui-form layui-card-body">
                    <div class="layui-form-item">

                        <button class="layui-btn layui-bg-black iconfont icon-daochu" id="btnExport">导出</button>
                    </div>
                </div>
                <div class="layui-card-body">
                    <table id="score" lay-filter="score"></table>
                </div>
            </div>
    </form>

    <!--引入JS文件-->
    <script src="layui/layui.js"></script>
    <script src="js/jquery-1.12.1.min.js"></script>
    <script>
        //使用form模块,table模块
        layui.use(['form', 'table', 'layer'], function () {
            var form = layui.form
                , table = layui.table
                , layer = layui.layer

            $(function () {
                init();
            });

            var dataList;

            //加载表格数据
            function init() {
                $.get({
                    url: "export.json"
                    , data: {
                        "Action": ""
                    },
                    cache: false, success: function (data) {
                        dataList = eval(data);
                        d = table.render({
                            elem: '#score'//获取标签
                            , toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
                            , title: '成绩导出'//导出数据excel的表名称
                            , height: 'full-140'  //高度设置
                            , limit: 2
                            , cols: [[
                                { type: 'checkbox', fixed: 'left' }
                                , { field: 'name', title: '姓名', align: 'left', width: 100 }
                                , { field: 'class', title: '班级', align: 'left', width: 100 }
                                , { field: 'scoreMath', title: '数学成绩', align: 'left', width: 100 }
                            ]]
                            , data: dataList
                            //, page: true//开启分页
                            , page: {
                                limits: [2, 3]//设置分页的条数
                            }
                            , done: function (res) {
                                console.log(res.data)
                            }
                        });
                    },
                    error: function (errorMsg) {
                        layer.msg(errorMsg, { icon: 5 });
                    }
                })
            }

            //全部导出 
            $("#btnExport").click(function () {
                table.exportFile(d.config.id, dataList, 'xls');
            })

            //导出时阻止页面刷新
            $(".layui-form").submit(function (e) {
                e.preventDefault();
            })
        });
    </script>
</body>
</html>

四 、页面展示

最终的页面效果图如下,导出全部功能。
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
layui 中,可以使用 table 模块的 exportFile 方法来实现导出功能。但是默认的导出格式有限,如果需要自定义导出格式,可以按照以下步骤实现: 1. 引入 js-xlsx 库 首先,在页面中引入 js-xlsx 库,这是一个支持 Excel 格式的 JavaScript 库。可以使用以下方式引入: ``` <script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.16.8/xlsx.full.min.js"></script> ``` 2. 自定义导出数据 在 table 模块的 done 回调函数中,获取需要导出数据,并按照 Excel 格式进行组织。以下是一个示例代码: ``` table.render({ elem: '#demo', url: '/demo/table/user/', cols: [[ //表头 {field: 'id', title: 'ID', width:80}, {field: 'username', title: '用户名', width:120}, {field: 'sex', title: '性别', width:80, sort: true}, {field: 'city', title: '城市', width:100}, {field: 'sign', title: '签名', width: 200}, {field: 'experience', title: '积分', width: 80, sort: true}, {field: 'score', title: '评分', width: 80, sort: true}, {field: 'classify', title: '职业', width: 100}, {field: 'wealth', title: '财富', width: 135, sort: true}, {fixed: 'right', title:'操作', toolbar: '#barDemo', width:150} ]], done: function(res, curr, count) { // 获取需要导出数据 var data = res.data; var sheetData = []; // 组织 Excel 表格数据 for (var i = 0; i < data.length; i++) { var row = []; row.push(data[i].id); row.push(data[i].username); row.push(data[i].sex); row.push(data[i].city); row.push(data[i].sign); row.push(data[i].experience); row.push(data[i].score); row.push(data[i].classify); row.push(data[i].wealth); sheetData.push(row); } // 导出 Excel var sheet = XLSX.utils.aoa_to_sheet(sheetData); var wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, sheet, "Sheet1"); XLSX.writeFile(wb, "demo.xlsx"); } }); ``` 在上面的代码中,我们先使用 table 模块获取了需要导出数据,然后按照 Excel 表格的格式组织了数据,最后使用 js-xlsx 库将数据导出为 Excel 文件。 需要注意的是,上面的代码中使用的是 XLSX.writeFile 方法将文件写入本地硬盘,如果需要在浏览器中打开导出的 Excel 文件,可以使用以下代码替换最后一行: ``` var wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:false, type: 'binary'}); try { var FileSaver = require('file-saver'); FileSaver.saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), "demo.xlsx") } catch(e) { if(typeof console != 'undefined') console.log(e, wbout); } ``` 3. 自定义导出按钮 最后,我们需要为页面添加一个自定义导出按钮,让用户可以点击按钮触发导出操作。以下是一个示例代码: ``` <button class="layui-btn" id="export-btn">导出 Excel</button> ``` 在页面加载完成后,可以使用以下代码为按钮添加点击事件: ``` document.getElementById("export-btn").onclick = function() { // 调用 table 模块的 reload 方法重新加载数据并触发导出操作 table.reload("demo", { page: { curr: 1 }, done: function() { layer.msg("导出成功"); } }); } ``` 在上面的代码中,我们为按钮添加了一个 onclick 事件,当用户点击按钮时,会调用 table 模块的 reload 方法重新加载数据并触发导出操作。需要注意的是,导出操作需要在 table 模块的 done 回调函数中执行,因此在 reload 方法中需要指定 done 回调函数。 综上所述,以上就是 layui 自定义导出的实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星银色飞行船

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值