Export Excel using ajax

 ExportUser.php

<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;
use App\Models\User;
use App\Models\User;
use Carbon\Carbon;
use Carbon\CarbonPeriod;
use Illuminate\Support\Facades\DB;

class ExportUser implements FromCollection
{

    public $start_date, $end_date;
    public function __construct($start_date = null, $end_date = null)
    {
        $this->start_date = $start_date;
        $this->end_date = $end_date;
    }

    public function collection()
    {

       $date = $this->start_date;
        $user =  User::select('fname', 'lname', 'phone_number')
        ->where(DB::raw("DATE(created_at)"),$date)->get();
        return collect($user);

    }
}


//ExportController---
<?php

namespace App\Http\Controllers\Admin;

use App\Exports\ExportUser;
use App\Http\Controllers\Controller;
use App\Models\User;
use Carbon\Carbon;
use Carbon\CarbonPeriod;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Excel;
use Illuminate\Support\Facades\Storage;

class ExportController extends Controller
{
 public function excel(Request $request)
    {
        if ($request->ajax()) {

            $fileName = Carbon::now();

            $file = Excel::raw(new ExportUser($request->start_date,
        $request->end_date), \Maatwebsite\Excel\Excel::XLSX);
            $data = [
                "name" => "$fileName.xlsx",
                'file' => "data:application/vnd.ms-excel;base64,".base64_encode($file)
            ];
            return response()->json($data);
        }
    }
}

//javascript

          $.ajax({
                      type: 'get',
                      url: ExportExcelUrl,
                      data: date_data,
                      beforeSend: function () {

                        },
                        success: function (result, status, xhr) {
                            var a = document.createElement("a");
                            a.href = result.file;
                            a.download = result.name;
                            document.body.appendChild(a);
                            a.click();
                            a.remove();


                        }

                    })

Comments