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;
}