From 354f869b13c1a3989869be15a6516f90ef90e03e Mon Sep 17 00:00:00 2001 From: Dwi Swandhana Date: Mon, 23 Feb 2026 17:46:27 +0700 Subject: [PATCH] update --- .../app/Http/Controllers/GudangController.php | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/htdocs/app/Http/Controllers/GudangController.php b/htdocs/app/Http/Controllers/GudangController.php index d5641857..ea8c1f9f 100644 --- a/htdocs/app/Http/Controllers/GudangController.php +++ b/htdocs/app/Http/Controllers/GudangController.php @@ -8,6 +8,8 @@ use App\XFiles; use App\SIMBHPJenis; use App\SIMBHPReport; use App\User; +use PhpOffice\PhpSpreadsheet\Spreadsheet; +use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use Validator; use Session; @@ -161,33 +163,44 @@ class GudangController extends Controller } $rows = $query->orderBy('id', 'DESC')->get(); - $filename = 'laporan-gudang-bln-'.$bulan.'_thn-'.$tahun.'.csv'; - $headers = [ - 'Content-Type' => 'text/csv; charset=UTF-8', - 'Content-Disposition' => 'attachment; filename="'.$filename.'"', - ]; + $filename = 'laporan-gudang-bln-'.$bulan.'_thn-'.$tahun.'.xlsx'; - $callback = function () use ($rows) { - $file = fopen('php://output', 'w'); - fputcsv($file, ['Tanggal', 'Bulan', 'Tahun', 'Jenis', 'Deskripsi', 'Pemasukan', 'Pengeluaran', 'Satuan Transaksi', 'Masa Expired', 'Keterangan']); + return response()->streamDownload(function () use ($rows) { + $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + $sheet->setTitle('Laporan Gudang'); + + $headers = ['Tanggal', 'Bulan', 'Tahun', 'Jenis', 'Deskripsi', 'Pemasukan', 'Pengeluaran', 'Satuan Transaksi', 'Masa Expired', 'Keterangan']; + $sheet->fromArray($headers, null, 'A1'); + + $rowNumber = 2; foreach ($rows as $row) { - fputcsv($file, [ - $row->tanggal, - $row->bulan, - $row->tahun, - $row->jenis, - $row->deskripsi, + $sheet->fromArray([ + (int) ($row->tanggal ?? 0), + (int) ($row->bulan ?? 0), + (int) ($row->tahun ?? 0), + $row->jenis ?: '-', + $row->deskripsi ?: '-', (int) ($row->pemasukan ?? 0), (int) ($row->pengeluaran ?? 0), $row->satuan_transaksi ?: '-', $row->masa_expired ?: '-', $row->keterangan ?: '-', - ]); + ], null, 'A'.$rowNumber); + $rowNumber++; } - fclose($file); - }; - return response()->stream($callback, 200, $headers); + foreach (range('A', 'J') as $col) { + $sheet->getColumnDimension($col)->setAutoSize(true); + } + + $writer = new Xlsx($spreadsheet); + $writer->save('php://output'); + $spreadsheet->disconnectWorksheets(); + unset($spreadsheet); + }, $filename, [ + 'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + ]); } public function jsonReportbhpPaginated(Request $request) {