Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

tinkerbell's avatar

Laravel Excel : error Resource interpreted as Document but transferred with MIME type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Laravel Excel to export data will download empty data with headers only excel sheet! I want to export only the filtered data from my search using excel but it will download an empty excel sheet only with headers!! please can anyone tell me where is my error!

DealerExportSearch.php

class DealersSearchExport implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents
{
    use Exportable;

    protected $name;
    protected $email;
    protected $mobile_no;
    protected $city;

    public function __construct( $name, $email, $mobile_no , $city)
    {
        $this->name         = $name;
        $this->email        = $email;
        $this->mobile_no    = $mobile_no;
        $this->city         = $city;
    }
     
    //function select data from database
    public function collection()
    {
        return Dealer::select()->where('name', $this->name)
                                ->where('email', $this->email)
                                ->where('mobile_no', $this->mobile_no)
                                ->where('city', '=', $this->city) //i tried using the above and this also same result
                                ->get();
    }
    
    public function registerEvents(): array
    {
        return [
            AfterSheet::class    => function (AfterSheet $event) {
                $cellRange = 'A1:W1'; // All headers
                $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(12);
            },
        ];
    }

    //function header in excel
    public function headings(): array
    {
        return [
             'No',
             'name',
             'email',
            'mobile_no',
            'shop_name',
            'city',
            'address'
        ];
    }
}

my controller

public function index(Request $request)

{
 $method = $request->method();
        if ($request->isMethod('get')) {

            $name       = $request->name;
            $email      = $request->email;
            $city       = $request->city;
            $mobile_no  = $request->mobile_no;

            if ($request->has('search')) {
                $dealers = Dealer::where('name', 'LIKE', '%'.$name.'%')
                            ->where('email', 'LIKE', '%'.$email.'%')
                            ->where('mobile_no', 'LIKE', '%'.$mobile_no.'%')
                           ->where('city', 'LIKE', '%'.$city.'%')
                            ->paginate(5);
                return view('dealer.index', compact('dealers'));
            }
            elseif ($request->has('exportSearchExcel')) {
                return Excel::download(new DealersSearchExport($name ?? '', $email ?? '', $mobile_no ?? '', $city ?? ''), 'DealersSearchExcel-reports.xlsx');
            }
            else{
           $dealers = Dealer::orderBy('id', 'DESC')->paginate(5);
            return view('dealer.index', compact('dealers'));
            }
        }
    }

blade

<form action="{{ route('dealer.index') }}" method="GET"  enctype="multipart/form-data">
        @csrf
        <div class="form-group row">
            <div class="col-sm-3">
                <label for="name">Name: </label>
                <input class="form-control" name="name" type="text" placeholder="The Dealer Name">
            </div>
         .....................................................................
            </div>
            <div class="col-md-12 pt-3 text-right">
                <button type="submit" name="search" class="btn btn-primary"><i class="fa fa-fw fa-search"></i> Search</button>
                <button type="submit" name="exportSearchExcel" class="btn btn-secondary text-light"><i class="fa fa-download"></i> Export Excel  </button>                
            </div>
        </div>

No error is showing just in my console it will return this error whenever i press the export button

Resource interpreted as Document but transferred with MIME type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: "http://127.0.0.1:8000/dealer?_token=TTlpqFNn4hr5rwI1jSlt0d4mbtww2moO8i1WWjfn&name=&email=&mobile_no=&exportSearchExcel=".

0 likes
1 reply
tinkerbell's avatar
tinkerbell
OP
Best Answer
Level 1

I fixed it by changing my query in DealerExportSearch.php to the same one that i have in controller then it worked

DealerExportSearch.php

class DealersSearchExport implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents , WithMapping
{
///same till the collection function
    //function select data from database
    public function Collection()
    {
        return Dealer::where('name', 'LIKE', '%'.$this->name.'%')
                            ->where('email', 'LIKE', '%'.$this->email.'%')
                            ->where('mobile_no', 'LIKE', '%'.$this->mobile_no.'%')
                           ->where('city', 'LIKE', '%'.$this->city.'%')
                            ->get();

    }

 public function map($row): array{
           $fields = [
              $row->id,
              $row->name,
              $row->gender,
              $row->date_of_birth,
              $row->email,
              $row->mobile_no,
              $row->shop_name,
              $row->city,
              $row->address,
         ];
        return $fields;
    }


///below codes not changed .....

Please or to participate in this conversation.