【问题标题】:Export Excel in Laravel在 Laravel 中导出 Excel
【发布时间】:2021-06-18 22:43:20
【问题描述】:

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

这是我的 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','Meeting','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,
        ];
   
      
    }

【问题讨论】:

  • 你看到了什么错误?

标签: laravel export-to-excel maatwebsite-excel


【解决方案1】:

而不是将 $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','InAm','OutAM','InPM','OutPM','Meeting','SpecialTask','Undertime','TotalHours','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() 时,我的所有变量值都返回空值。

【讨论】:

  • 公共函数导出(请求 $request){ ob_start(); $datestart = $request->input('min'); var_dump($datestart); ob_end_clean();返回 Excel::download(new ExportAttendance(strval($datestart)),'Attendance.xlsx'); }
  • 当我使用 ob_end_clean() 时,它会清除我所有的值,这是为什么呢?我如何在使用这个干净的时候保持我的价值观?请赐教。
猜你喜欢
  • 2021-09-15
  • 2015-11-24
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多