Через ajax вызов необходимо экспортировать Maatwebsite \ Excel, и я использую laravel 5.7 и maatwebsite 3.1. Мой код: В сценарии:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: APP_URL + '/report/export-excel',
method: "POST",
//dataType: "json",
data: {"data":data,"rtype":rtype},
success: function(data) {
console.log(data);
location.href = APP_URL +data;
console.log(data);
},
});
В контроллере:
Excel::store($draw,'filename.xls', function($excel) use($draw) {
$excel->sheet('Backup', function($sheet) use($draw) {
$datasheet = array();
$datasheet[0] = array('Partner Name','Quote Id','Sales Order','Customer Name','Amount','Created Date','Expired Date');
$i=1;
if(count($draw)>0){
foreach($draw as $key=>$datanew){
$datasheet[$i] = array(
$datanew['partner_name'],
$datanew['quote_name'],
$datanew['sales_order_no'],
$datanew['customer_name'],
$datanew['created_at'],
$datanew['expiry_date']
);
$i++;
}
}
$sheet->fromArray($datasheet, null, 'A1', false, false);
$sheet->setHeight(1, 30);
$sheet->cell('A1:S1', function($cell) {
$cell->setAlignment('center');
$cell->setFont(array(
'size' => '14',
'bold' => true
));
});
});
})->store('csv', '/public/uploads/pdf/', true);
Кажется, проблема версии. Обеспечить правильный синтаксис для maatwebsite 3.1.