如何解决如何使用 Laravel-Excel 导出以生成 SUBTOTAL 输出?
我希望从 LaraVEL EXCEL 导出以根据列“Kode Sumberdaya/ Resource代码”(MysqL中的jur_kodesda)如下图:
我预期的表格结果: Expected Result
当前表格结果: Result Now
这是我的导出代码
<?PHP
namespace App\Exports;
use App\Models\DownloadJurnalSdamodel;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\Withheadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\RegistersEventListeners;
use Maatwebsite\Excel\Events\BeforeExport;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
class SortJurnalSDAExport implements FromCollection,Withheadings,WithMapping,WithEvents,ShouldAutoSize,WithColumnWidths,WithColumnFormatting
{
/**
* @return \Illuminate\Support\Collection
*/
use RegistersEventListeners;
protected $filesEx = [];
protected $totalEx = 0;
public function collection()
{
/* Choose Estimated Code */
$resultRaw = DownloadJurnalSdamodel::select('jur_kodedivisi','jur_tanggal','jur_nobukti','jur_kodeper','jur_kodespk','jur_kodenasabah','jur_kodesda','jur_kodealat','jur_kodetahap','jur_keterangan','jur_volume','jur_debet','jur_kredit','jur_totalbiaya')
->whereIn('jur_kodeper',[6101111,6101211,6101311,6101411])
->orderBy('jur_kodesda')
->orderBy('jur_kodetahap')
->orderBy('jur_tanggal')
->get();
$colResultRaw = collect($resultRaw);
return $colResultRaw;
}
public function headings(): array
{
return [
'Kode Divisi / Division Code','Tanggal / Date (mm/dd/yyyy)','No Bukti / Evidence Number','Kode Perkiraan / Estimated Code','Kode SPK / SPK Code','Kode Nasabah / Customer Code','Kode Sumber Daya / Resource Code','Kode Alat / Tool Code','Kode Tahap / Stage Code','Keterangan / Description','Volume','Debet / discharge','Kredit / Credit','Total Biaya / Total Cost',];
}
public function map($resultMap): array
{
$this->totalEx += $resultMap->jur_totalbiaya;
return [
$resultMap->jur_kodedivisi,$resultMap->jur_tanggal,$resultMap->jur_nobukti,$resultMap->jur_kodeper,$resultMap->jur_kodespk,$resultMap->jur_kodenasabah,$resultMap->jur_kodesda,$resultMap->jur_kodealat,$resultMap->jur_kodetahap,$resultMap->jur_keterangan,$resultMap->jur_volume,$resultMap->jur_debet,$resultMap->jur_kredit,$resultMap->jur_totalbiaya,];
}
public function columnWidths(): array
{
return [
'J' => 55,];
}
public function registerEvents(): array
{
$styleHeader = [
'font' => [
'bold' => true,'size' => 12
]
];
return [
BeforeExport::class => function(BeforeExport $event)
{
$event->writer->getProperties()
->setCreator('Sample Creator')
->setLastModifiedBy('Sample Creator')
->setTitle("Export Result from Sample Creator")
->setSubject("Export Result from Sample Creator")
->setDescription("Resource Code Results sorted and performed Subtotals per Resource");
},AfterSheet::class => function(AfterSheet $event) use ($styleHeader)
{
$event->sheet->getStyle("A1:N1")->applyFromArray($styleHeader)->getFill()
->setFillType(\PHPOffice\PHPSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB('8F00FFCD');
$event->sheet->setCellValue('A'. ($event->sheet->getHighestRow()+1),"Total");
$event->sheet->getDelegate()->mergeCells("A{$event->sheet->getHighestRow()}:L{$event->sheet->getHighestRow()}");
$event->sheet->setCellValue('N'. ($event->sheet->getHighestRow()),(($this->totalEx)/2));
}
];
}
}
我也试过以下链接:Link From StackOverflow 但不工作。我希望有人能帮助我解决这个小计问题。非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。