一分鐘實現 layui 導出 excel --php--laravel

layui導出Excel三步走:

一、第1步:導出按鈕 ;

 <button  type="button" class="layui-btn layui-btn-sm" id="export">導出</button>

 

二、第2步:table.render中加入toolbar和totalrow屬性都設置爲true;

        官方文檔也有說過如圖: 

代碼截圖

 貼代碼: 

 layui.use(['layer','table','form','laydate', 'excel'],function () {
                var layer = layui.layer;
                var excel = layui.excel;
                var form = layui.form;
                var table = layui.table;
                var $ = layui.$;
                //用戶表格初始化
                var dataTable = table.render({
                    elem: '#dataTable'
                    ,height: 500
                    ,url: "{{ route('admin.agent_apply.data') }}" //數據接口
                    ,page: true //開啓分頁
                    // ,toolbar: '#toolbar'
                    ,toolbar:true
                    ,title:'推薦官申請列表'
                    ,totalRow:true
                    ,cols: [[ //表頭
                        {checkbox: true,fixed: true}
                        ,{field: 'id', title: 'ID', sort: true,width:80}

三、第3步:JS請求接口拿到數據導出 

               $("#export").click(function (obj) {
                    $.get(
                        "{{ route('admin.agent_apply.export') }}",
                        {
                            _method:'get',
                            'id' :$("input[name='id']").val(),
                            'mobile' : $("input[name='mobile']").val(),
                            'status' : $("select[name='status']").val(),
                            'start_time' : $("input[name='start_time']").val(),
                            'end_time' : $("input[name='end_time']").val(),
                            'type' : $("select[name='type']").val(),
                        },
                        function (result) {
                            excel.exportExcel({
                                sheet1: result
                            }, '推薦官申請列表.xlsx', 'xlsx')
                        });
                })

注意:

       數據返回數組格式爲:

$data = [
    ['學號','姓名','成績'],
    ['10001','AAAAA','99'],
    ['10002','BBBBB','92'],
    ['10003','CCCCC','95'],
    ['10004','DDDDD','89'],
    ['10005','EEEEE','96'],
];


(即二維數組中第一個子數組爲excel標題欄,下面數據一一對應)

php接口代碼示例:

/**
     * @param Request $request
     * @return array
     * 導出
     */
    public function export(Request $request)
    {
        $params = $request->all();
        $query  = self::_where($params);
        $res    = $query->orderBy('id', 'desc')
            ->with('sku')
            ->with('dealer')
            ->with('address_info')
            ->with('coupon')
            ->get()
            ->toArray();
        $rs     = [];
        if ($res) {
            foreach ($res as $k => $v) {
                $rs[$k][] = $v['goods_order_no'];
                $rs[$k][] = $v['sub_order_no'];
                $rs[$k][] = $v['third_no'];
                $rs[$k][] = SubOrders::SOURCE_TXT[$v['source']];
                $rs[$k][] = SubOrders::STATUS_TXT[$v['status']];
                $rs[$k][] = date('Y-m-d H:i:s', $v['created_at']);
                $rs[$k][] = $v['pay_at'] ? date('Y-m-d H:i:s', $v['pay_at']) : '';
                $rs[$k][] = $v['delivery_at'] ? date('Y-m-d H:i:s', $v['delivery_at']) : '';
                $rs[$k][] = $v['receive_at'] ? date('Y-m-d H:i:s', $v['receive_at']) : '';
                $rs[$k][] = $v['sku_id'];
                $rs[$k][] = $v['sku']['sku_sn'];
                $rs[$k][] = $v['dealer']['name'];
                $rs[$k][] = $v['dealer']['formal_name'];
                $rs[$k][] = $v['goods_name'];
                $rs[$k][] = $v['number'];
                $rs[$k][] = floatFormat($v['fee'] + $v['balance']);
                $rs[$k][] = floatFormat($v['fee']);
                $rs[$k][] = floatFormat($v['balance']);
                $rs[$k][] = floatFormat($v['goods_price']);
                $rs[$k][] = floatFormat($v['sku']['cost_price']);
                $rs[$k][] = floatFormat($v['sku']['line_price']);
                $rs[$k][] = $v['goods_attr'];
                $rs[$k][] = $v['consignee'];
                $rs[$k][] = $v['consignee_mobile'];

                $rs[$k][] = $v['province_name'];
                $rs[$k][] = $v['city_name'];
                $rs[$k][] = $v['area_name'];
                $rs[$k][] = $v['address'];
                $rs[$k][] = $v['remark'];
                $rs[$k][] = $v['user_id'];
                $rs[$k][] = SubOrders::IS_REFUND_TXT[$v['is_refund']];
                $rs[$k][] = $v['coupon_id'];
                $rs[$k][] = $v['coupon']['title'] ?? '';

            }
        }
        $data[] = ["母訂單", "訂單號", "支付流水號", "訂單來源", '訂單狀態', '訂單創建時間', '訂單付款時間', '訂單發貨時間', '確認收貨時間', 'SKU_ID', 'SKU編碼', '供應商簡稱', '供應商公司名稱', '商品名稱', '數量', '實付金額', '三方支付', '餘額支付', '商品價(單價)', '成本價(單價)', '劃線價(單價)', 'SKU規格', '收件人姓名', '收件人手機號', '收件人省份', '收件人城市', '收件人區/鎮', '收件人具體地址', '備註', '用戶ID', '售後狀態', '優惠券ID', '優惠券名稱'];
        if ($rs) {
            $data = array_merge($data, $rs);
        }
        return $data;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章