【发布时间】: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