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

LancyBark's avatar

CSV/Excel export doesn't work.

PDF/CSV/Excel export doesn't work, doesn't download files. I tried to debugged it and I get queried data, but file isn't generated. I use post form to choose a file format and date range which taks will be exported.

 public function export(Request $request)
    {
        $dateRange = explode('-', $request->datefilter);
        $dateFrom = Carbon::createFromDate(Arr::get($dateRange, '0', ''));
        $dateTo = Carbon::createFromDate(Arr::get($dateRange, '1', date('Y-m-d')));
        switch ($request->export_format) {
            case 'csv':
                $this->exportCSV($dateFrom, $dateTo);
                break;
            case 'excel':
                $this->exportExcel($dateFrom, $dateTo);
                break;
            case 'pdf':
                $this->exportPDF($dateFrom, $dateTo);
                break;
        }

        return redirect()->back()->with('message', 'Export was successfully');
    }

    private function exportCSV($dateFrom, $dateTo)
    {
        return Excel::download(new TaskExport($dateFrom, $dateTo), 'task.csv');
    }

    private function exportExcel($dateFrom, $dateTo)
    {
        return Excel::download(new TaskExport($dateFrom, $dateTo), 'task.xlsx');
    }

    private function exportPDF($dateFrom, $dateTo)
    {
        $data = auth()->user()->tasks()->whereBetween('created_at', [$dateFrom, $dateTo])->get();

        view()->share('tasks', $data);
        $pdf = PDF::loadView('pdf_view', $data);

        return $pdf->download('task.pdf');
    }

Form

   <form method="post" action="{{route('task.export')}}">
            @csrf
            <select name="export_format">
                <option value="csv">CSV</option>
                <option value="pdf">PDF</option>
                <option value="excel">Excel</option>
            </select>
            <input type="text" name="datefilter" value="">
            <button class="btn btn-sm btn-primary" type="submit">Export</button>
        </form>
0 likes
2 replies
Nakov's avatar

What I usually do is storing the file in the local disk and then performing download..

Storage::disk('public')->put('task.pdf', $pdf->output());

return Storage::disk('public')->download('task.pdf');

or instead of download use the stream() method..

return $pdf->stream();

but make sure in your switch statement you add this

return $this->exportPDF($dateFrom, $dateTo);

instead of breaking out of the loop and then redirecting back so that the browser knows you are trying to download a file.

LancyBark's avatar

I do some code reviews, they do without storing. On CSV/Excel part files j they reach export class funcition but just doesn't generate CSV/Excel file.

Please or to participate in this conversation.