рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рд╕реЗ рдлрд╛рдЗрд▓ рдкрд░реЛрд╕рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреБрдЫ рд╢реЛрдз рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдЯреНрд╡реАрд╡ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рд╕реЗ рд╕реАрдПрд╕рд╡реА рдФрд░ рдПрдХреНрд╕рдПрд▓рдПрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ред рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ xls рд╣реИ, рддреЛ рд╣реЗрд░рдлреЗрд░ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рд╣реИред
рдбреЗрдЯрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдХреНрдкрдЯреБ рдХреНрд╡реЗрд░реА рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдРрд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдкреАрдПрдЪрдкреА
if(!empty(Input::get('exportType'))) { //i use a custom get parameter here
$dd = Excel::create('testFileName', function($excel) use ($data) {
$excel->sheet('testSheetName', function($sheet) use ($data) {
$sheet->fromArray($data->get()->toArray());
});
$excel->setTitle($filename);
$excel->setLastModifiedBy(Carbon::now()->toDayDateTimeString()); //updated has Carbon::now() only now throw exception on vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5.php l847 strlen()
});
//tweak for serving XLS file from ajax (or go trough download() Excel method for csv files)
if(Input::get('exportType') == 'xls') {
$dd = $dd->string();
$response = array(
'filename' => 'testFileName', //as we serve a custom response, HTTP header for filename is not setted by Excel. From the JS, you need to retrieve this value if type is XLS to set filename
'file' => "data:application/vnd.ms-excel;base64,".base64_encode($dd)
);
return response()->success($response); //do a json encode
} else {
//direct use of Excel download method for non-xls files - xls files need special JS treatment
$dd->download(Input::get('exportType')); //not XLS, so CSV (didnt tried xlsx, pdf is blank but not sure it's related to this)
}
die; //prevent malformed binary data stream, not sure if needed
}
рдЬреЗ рдПрд╕
$.ajax({
cache: false,
url: url, //GET route
responseType: 'ArrayBuffer', //not sure if needed
data: exportParam, //exportType parameter here
success: function (data, textStatus, request) {
//you could need to decode json here, my app do it automaticly, use a try catch cause csv are not jsoned
//already json decoded? custom return from controller so format is xls
if(jQuery.isPlainObject(data)) {
data = data.data; //because my return data have a 'data' parameter with the content
}
//V1 - http://stackoverflow.com/questions/35378081/laravel-excel-using-with-ajax-is-not-working-properly
//+V3 - http://stackoverflow.com/questions/27701981/phpexcel-download-using-ajax-call
var filename = "";
var disposition = request.getResponseHeader('Content-Disposition');
if (disposition && disposition.indexOf('attachment') !== -1) {
var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
var matches = filenameRegex.exec(disposition);
if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
}
if(!jQuery.isPlainObject(data)) { //is CSV - we use blob
var type = request.getResponseHeader('Content-Type');
var blob = new Blob([data], { type: type ,endings:'native'});
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
}
var a = document.createElement("a");
a.href = jQuery.isPlainObject(data) ? data.file : downloadUrl;
a.download = jQuery.isPlainObject(data) ? data.filename : filename;
document.body.appendChild(a);
a.click();
a.remove();
},
error: function (ajaxContext) {
toastr.error('Export error: '+ajaxContext.responseText);
}
});
рдкреАрдПрд╕: рдпрд╣ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ
рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рдпрд╣ рд╕реАрдПрд╕рд╡реА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдПрд▓рдПрд╕ рдирд╣реАрдВ,
рдореБрдЭреЗ рдЕрдЬрд╛рдХреНрд╕ рд╕реЗ рдПрдХ xlsx рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:
рдкреАрдПрдЪрдкреА
$data рдПрдХ рд╡рд╛рдХреНрдкрдЯреБ рдХреНрд╡реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдРрд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
$myFile= Excel::create("filename", function($excel) use($data) {
$excel->setTitle('title');
$excel->sheet('sheet 1', function($sheet) use($data) {
$sheet->fromArray($data, null, 'A1', true, true);
});
});
$myFile = $myFile->string('xlsx'); //change xlsx for the format you want, default is xls
$response = array(
'name' => "filename", //no extention needed
'file' => "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,".base64_encode($myFile) //mime type of used format
);
return response()->json($response);
рдЬреЗ рдПрд╕
$.ajax({
cache: false,
url: url, //GET route
data: params, //your parameters data here
success: function (response, textStatus, request) {
var a = document.createElement("a");
a.href = response.file;
a.download = response.name;
document.body.appendChild(a);
a.click();
a.remove();
},
error: function (ajaxContext) {
toastr.error('Export error: '+ajaxContext.responseText);
}
});
рдзрдиреНрдпрд╡рд╛рдж!!
рдореБрдЭреЗ "рдХреНрд▓рд╛рд╕ 'рдПрдХреНрд╕реЗрд▓' рдирд╣реАрдВ рдорд┐рд▓рд╛" рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@randomhoodie рдХрд┐рд╕реА рднреА рд╕реНрд░реЛрдд рд╕реЗ рдЖрдк рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЖрдП?
@eldyvoon рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд╣рд╛, "рдореИрдВрдиреЗ рдореВрд▓ рдЙрддреНрддрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛", рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЙрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ, рдЗрд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рдПрдВ, рдФрд░ рдбрдХрдбрдХрдЧреЛ (рдЦреЛрдЬ рдЗрдВрдЬрди) рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдордПрд╕ рдСрдлрд┐рд╕ xlsx рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдерд╛ рдЬрдм рддрдХ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА, рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдпрд╛ рдерд╛, рдФрд░ рдЬрдм рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗрдЧрд╛ред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рди рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рди рд╣реА рдЕрдЬрд╛рдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рд╕реАрдПрд╕рд╡реА/рдПрдХреНрд╕рдПрд▓рдПрд╕/рдПрдХреНрд╕рдПрд▓рдПрд╕рдПрдХреНрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╡рд╛рд▓рд╛ рдПрдХ рд╡реЗрдм рдкреЗрдЬ рд╣реИ рдФрд░ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдкреЗрдЬ рдмрд┐рд▓реНрдХреБрд▓ рд░реАрдлреНрд░реЗрд╢ рд╣реЛред рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рдХрд┐рдпрд╛ рд╡рд╣ рдПрдХ рд▓рд┐рдВрдХ рдХреЛ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реМрдЯрд╛рддрд╛ рдерд╛ ...
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ getSpreadsheet() {
$ рдЖрдЗрдЯрдо = рдЖрдЗрдЯрдо :: рд╕рднреА ();
рдПрдХреНрд╕реЗрд▓ :: рдмрдирд╛рдПрдВ ('рдЖрдЗрдЯрдо', рдлрд╝рдВрдХреНрд╢рди ($ рдПрдХреНрд╕реЗрд▓) рдЙрдкрдпреЛрдЧ ($ рдЖрдЗрдЯрдо) {
$excel->sheet('ExportFile', function($sheet) use($items) {
$ рд╢реАрдЯ-> рдРрд░реЗ рд╕реЗ ($ рдЖрдЗрдЯрдо);
});
}) -> рдирд┐рд░реНрдпрд╛рдд ('рдПрдХреНрд╕рдПрд▓рдПрд╕');
}
рдЕрджреНрднреБрдд!!!!
рдзрдиреНрдпрд╡рд╛рдж @randomhoodie!
3.x рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЗ PHP рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдЧрд╛рдЗрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛:
$myFile = Excel::raw(new YOUR_Export_Class, \Maatwebsite\Excel\Excel::XLSX);
$response = array(
'name' => "filename", //no extention needed
'file' => "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,".base64_encode($myFile) //mime type of used format
);
return response()->json($response);
рдзрдиреНрдпрд╡рд╛рдж @kynetiv , рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 3.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ: filename.xlsx
рдпрджрд┐ рдЖрдк рдЕрднреА рднреА 2020 рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓рд╛рд░рд╡реЗрд▓ рдПрдХреНрд╕реЗрд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 3.x рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рд╣реИ
рдЙрджрд╛рд╣рд░рдг:
$exports = new ReportsExporter($data, $columns);
Excel::store($exports , 'filename.xlsx', 'custom_disk_location');
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
'custom_disk_location' => [
'driver' => 'local',
'root' => public_path('files'),
],
...
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдПрдХреНрд╕реЗрд▓ рдлрд╛рдЗрд▓ рд╕реНрдЯреЛрд░реЗрдЬ/рдРрдк рдореЗрдВ рд╕реЗрд╡ рдирд╣реАрдВ рд╣реИ
рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ/рдлрд╝рд╛рдЗрд▓ рдкрде рдореЗрдВ рд╕рд╣реЗрдЬ рд▓реЗрдЧрд╛
рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╡рд╛рдкрд╕, рдЗрд╕ рддрд░рд╣ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
function download(filename, path) {
let element = document.createElement('a');
element.setAttribute('href', path);
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдФрд░ рдкрде рдкрд╛рд╕ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
рдбрд╛рдЙрдирд▓реЛрдб ("filename.xlsx", location.origin+"files/filename.xlsx");
рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдмрд╛рдж рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдПрдХ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╣рдЯрд╛ рджреЗрдВ
рдЕрдирд▓рд┐рдВрдХ ("рдлрд╝рд╛рдЗрд▓реЗрдВ / рдлрд╝рд╛рдЗрд▓ рдирд╛рдоред xlsx");
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЛ рднреА рдЕрдЬрд╛рдХреНрд╕ рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рд░реНрд╡рд╛-рдПрдХреНрд╕реЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИ рдФрд░
рдЙрдиреНрд╣реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ рдФрд░ рд╕рд╛рде рд╣реА рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╛рдо рджреЗрдВред
рдореБрдЭреЗ рдЕрдЬрд╛рдХреНрд╕ рд╕реЗ рдПрдХ xlsx рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:
рдкреАрдПрдЪрдкреА
$data рдПрдХ рд╡рд╛рдХреНрдкрдЯреБ рдХреНрд╡реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдРрд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред$myFile= Excel::create("filename", function($excel) use($data) { $excel->setTitle('title'); $excel->sheet('sheet 1', function($sheet) use($data) { $sheet->fromArray($data, null, 'A1', true, true); }); }); $myFile = $myFile->string('xlsx'); //change xlsx for the format you want, default is xls $response = array( 'name' => "filename", //no extention needed 'file' => "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,".base64_encode($myFile) //mime type of used format ); return response()->json($response);
рдЬреЗ рдПрд╕
$.ajax({ cache: false, url: url, //GET route data: params, //your parameters data here success: function (response, textStatus, request) { var a = document.createElement("a"); a.href = response.file; a.download = response.name; document.body.appendChild(a); a.click(); a.remove(); }, error: function (ajaxContext) { toastr.error('Export error: '+ajaxContext.responseText); } });
рдореБрдЭреЗ рдЕрдЬрд╛рдХреНрд╕ рд╕реЗ рдПрдХ xlsx рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:
рдкреАрдПрдЪрдкреА
$data рдПрдХ рд╡рд╛рдХреНрдкрдЯреБ рдХреНрд╡реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдРрд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред$myFile= Excel::create("filename", function($excel) use($data) { $excel->setTitle('title'); $excel->sheet('sheet 1', function($sheet) use($data) { $sheet->fromArray($data, null, 'A1', true, true); }); }); $myFile = $myFile->string('xlsx'); //change xlsx for the format you want, default is xls $response = array( 'name' => "filename", //no extention needed 'file' => "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,".base64_encode($myFile) //mime type of used format ); return response()->json($response);
рдЬреЗ рдПрд╕
$.ajax({ cache: false, url: url, //GET route data: params, //your parameters data here success: function (response, textStatus, request) { var a = document.createElement("a"); a.href = response.file; a.download = response.name; document.body.appendChild(a); a.click(); a.remove(); }, error: function (ajaxContext) { toastr.error('Export error: '+ajaxContext.responseText); } });
рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдЕрдЬрд╛рдХреНрд╕ рд╕реЗ рдПрдХ xlsx рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:
рдкреАрдПрдЪрдкреА
$data рдПрдХ рд╡рд╛рдХреНрдкрдЯреБ рдХреНрд╡реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдРрд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЬреЗ рдПрд╕