LARAVEL 9:如何使用maatwebsite基于过滤数据(id,月份和年份)导出数据到excel

w46czmvw  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(248)

我正在根据employee_id筛选器、月份和年份将数据导出到Excel:


提交过滤器后,数据将显示在下表中:

我已经设法获得数据,但当点击下载Excel按钮时,内容只是空Excel,如下所示:

数据不进入excel。
我的控制者:

public function rekapabsensiExcel(Request $request)
{
    $idkaryawan = $request->id_karyawan;
    $bulan      = $request->query('bulan',Carbon::now()->format('m'));
    $tahun      = $request->query('tahun',Carbon::now()->format('Y'));

    // simpan session
    $idkaryawan = $request->session()->get('idkaryawan');
    $bulan      = $request->session()->get('bulan');
    $tahun      = $request->session()->get('tahun',);

    // dd($idkaryawan,$bulan,$tahun );

    if(isset($idkaryawan) && isset($bulan) && isset($tahun))
    {
        $data = Absensi::where('id_karyawan', $idkaryawan)
        ->whereMonth('tanggal', $bulan)
        ->whereYear('tanggal',$tahun)
        ->get();
        // dd($data);
    }else{
        $data = Absensi::all();
    }
    return Excel::download(new RekapabsensiExport(['data'=>$data, 'idkaryawan'=>$idkaryawan]),'rekap_absensi_bulanan.xlsx');
}

我的博客.php:

<?php

 namespace App\Exports;

 use App\Models\Absensi;
 use Maatwebsite\Excel\Concerns\FromCollection;

class RekapabsensiExport implements FromCollection
{
protected $id_karyawan;

// function __construct($id_karyawan) {
//     $this->id_karyawan = $id_karyawan;
// }
 public function headings(): array {
    return [
        "No. ID","ID Karyawan","NIK","Tanggal","Jam Kerja","Jam Masuk","Jam Pulang",
        "Scan Masuk","Scan Pulang","Normal","Riil","Terlambat","Plg Cepat","Absent",
        "Lembur","Jml Jam Kerja","pengecualian","Harus C/I","Harus C/O","Departemen",
        "Hari Normal","Akhir Pekan","Hari Libur","Jml Kehadiran","Lembur Hari Normal",
        "Lembur Akhir Pekan","Lembur Hari Libur"
    ];
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
    return Absensi::where('id_karyawan',$this->id_karyawan)->get();
}
}

我哪里做错了?请帮帮忙

ecfdbz9o

ecfdbz9o1#

当前,您没有得到对此语句的响应,因为$this->id_karyawannull,因为您没有正确地传递该值。

return Absensi::where('id_karyawan', $this->id_karyawan)->get();

在上面,你传递了一个数组给Export类,但是你的注解掉的构造函数只被配置为接受一个参数,如果我们坚持使用单个参数,你可以这样做。

return Excel::download(new RekapabsensiExport($data, $idkaryawan),'rekap_absensi_bulanan.xlsx');

那么导出构造函数将如下所示。

protected $data;
protected $id_karyawan;

function __construct($data, $id_karyawan) {
    $this->data = $data;
    $this->id_karyawan = $id_karyawan;
}

相关问题