【问题标题】:Laravel Excel : error Resource interpreted as Document but transferred with MIMELaravel Excel:错误资源解释为文档但使用 MIME 传输
【发布时间】:2021-04-25 12:40:20
【问题描述】:

Laravel Excel 导出数据将在 excel 表中下载只有标题的空数据!我只想从我的搜索中导出过滤后的数据,但它会下载一个只有标题的空 excel 表!!请谁能告诉我我的错误在哪里!

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

我的控制器

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

刀片

<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" value="{{ request()->input('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>

在我的控制台中没有显示任何错误,只要我按下导出按钮,它就会返回此错误并下载一个空的 xslx。

资源被解释为文档,但使用 MIME 类型 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: "http://127.0.0.1:8000/dealer?_token=TTlpqFNn4hr5rwI1jSlt0d4mbtww2moO8i1WWjfn&name=&email=&mobile_no=&exportSearchExcel=".

【问题讨论】:

    标签: laravel export laravel-8 laravel-excel


    【解决方案1】:

    更新

    我通过将 DealerExportSearch.php 中的查询更改为我在 controller 中的相同查询来修复它,然后它就起作用了

    DealerExportSearch.php

    class DealersSearchExport implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents , WithMapping
    {
    //the above codes not changed 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 .....
    
    

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 2012-12-08
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 2015-08-09
      • 2017-05-09
      • 2014-11-19
      相关资源
      最近更新 更多