微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Laravel 中导出 Excel

如何解决在 Laravel 中导出 Excel

**我在导出文件上传递参数时遇到问题,我想根据页面上选择的日期过滤导出。希望你能帮我解决这个问题。谢谢**

这是我的 ExportController,我从表单向我的控制器请求数据,以便为导出集合指定日期。

namespace App\Http\Controllers;
use Illuminate\Http\Response;
use Illuminate\Http\Request;
use App\Exports\ExportAttendance;
use Maatwebsite\Excel\Facades\Excel;
class ExportController extends Controller
{

    
    public function export(Request $request)
    {
     
      
        return Excel::download(new ExportAttendance($request->input('min'),$request->input('max')),'Attendance.xlsx');
    }
}

这是我的ExportAttendance.PHP,它负责集合的导出。在查询功能上,我想根据控制器上请求的日期过滤数据。我如何将数据从控制器传递到我的 Export.PHP,我确实使用了构造函数,但它总是返回错误

public function headings():array{
        return[
            
            'Name','In (AM)','Out (AM)','In (PM)','Out (PM)','Meeting','Task','Note','Total Hours','Date'

        ];
    }
    public function query()
    { 
        $start = "2021-06-14";
        $end = "2021-06-14";

        return Attendance::select('Name','InAm','OutAM','InPM','OutPM','SpecialTask','Undertime','TotalHours','Date')->whereBetween('Date',[$start,$end]);
    }
    public function collection()
    {
        
        return Attendance::all();

    }
    public function map($attendance):array
    {
        return[
            $attendance->Name,$attendance->InAM,$attendance->OutAM,$attendance->InPM,$attendance->OutPM,$attendance->Meeting,$attendance->SpecialTask,$attendance->Undertime,$attendance->TotalHours,$attendance->Date,];
   
      
    }

解决方法

而不是将 $request 对象传递给导出类。您可以简单地使用 request 辅助方法。

public function query()
    { 
        return Attendance::select('Name','InAm','OutAM','InPM','OutPM','Meeting','SpecialTask','Undertime','TotalHours','Date')
            ->whereBetween('Date',[request('start'),request('end')]);
    }

传递参数也应该有效。请让我知道您看到了什么错误,以便我更新我的答案。

我使用了构造函数


    public function query()
        { 
            $start = "2021-06-14";
            $end = "2021-06-14";
    return Attendance::select('Name','Date')->where('Date','=',$this->year);
}

这是我的控制器,


    public function export(Request $request)
        {
          ob_start();
          $datestart = $request->input('min');
          $datestart = ob_get_contents();
         
        
          return Excel::download(new ExportAttendance($datestart),'Attendance.xlsx');
          ob_end_flush();
    
    }

另一个问题出现了,当我使用 ob_end_clean() 时,我所有的变量值都返回了空值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。