prepare($sql); $stmt->execute($params); $data = $stmt->fetchAll(PDO::FETCH_ASSOC); // ===================== // SPREADSHEET // ===================== $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // ===================== // HEADER // ===================== $headers = [ 'No', 'Nama', 'ID Pelanggan', 'Alamat', 'Keterangan', 'Paket', 'Server', 'Marketing', 'No WhatsApp', 'TRX ID', 'Channel', 'Status', 'Amount', 'Fee', 'Nett', 'Dibuat', 'Tanggal Bayar' ]; $sheet->fromArray($headers, null, 'A1'); $sheet->getStyle('A1:P1')->getFont()->setBold(true); // ===================== // DATA // ===================== $row = 2; $no = 1; $totalAmount = 0; $totalFee = 0; $totalNett = 0; foreach ($data as $d) { $sheet->setCellValue("A{$row}", $no++); $sheet->setCellValue("B{$row}", $d['nama']); $sheet->setCellValue("C{$row}", "'" . $d['akun']); $sheet->setCellValue("D{$row}", $d['alamat']); $sheet->setCellValue("E{$row}", $d['keterangan']); $sheet->setCellValue("F{$row}", $d['nama_paket']); $sheet->setCellValue("G{$row}", $d['nama_server']); $sheet->setCellValue("H{$row}", $d['nama_marketing']); $sheet->setCellValue("I{$row}", "'" . $d['nomor_whatsapp']); $sheet->setCellValue("J{$row}", "'" . $d['trx_id']); $sheet->setCellValue("K{$row}", $d['channel']); $sheet->setCellValue("L{$row}", $d['status']); $sheet->setCellValue("M{$row}", (int)$d['amount']); $sheet->setCellValue("N{$row}", (int)$d['fee']); $sheet->setCellValue("O{$row}", (int)$d['nett']); $sheet->setCellValue("P{$row}", $d['created_at']); $sheet->setCellValue("Q{$row}", $d['paid_at']); $totalAmount += (int)$d['amount']; $totalFee += (int)$d['fee']; $totalNett += (int)$d['nett']; $row++; } // ===================== // TOTAL // ===================== $sheet->setCellValue("L{$row}", "TOTAL"); $sheet->setCellValue("M{$row}", $totalAmount); $sheet->setCellValue("N{$row}", $totalFee); $sheet->setCellValue("O{$row}", $totalNett); $sheet->getStyle("L{$row}:O{$row}") ->getFont() ->setBold(true); // ===================== // FORMAT ANGKA RUPIAH // ===================== $sheet->getStyle("L2:N{$row}") ->getNumberFormat() ->setFormatCode('#,##0'); // ===================== // AUTO WIDTH // ===================== foreach (range('A', 'P') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true); } // ===================== // NAMA FILE // ===================== $filename = 'Laporan_Payment_Gateway_' . date('YmdHis') . '.xlsx'; // ===================== // OUTPUT // ===================== header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Cache-Control: max-age=0'); $writer = new Xlsx($spreadsheet); $writer->save('php://output'); exit;