Files
manjapro_v6/excel/export.php
T

93 lines
2.9 KiB
PHP

<?php
require '../vendor/autoload.php'; // Pastikan path ini sesuai dengan autoload.php Anda
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// Koneksi ke database
include '../config/connect.php';
// Ambil parameter dari request
$search = isset($_GET['search']) ? $_GET['search'] : '';
$startDate = isset($_GET['start_date']) ? $_GET['start_date']. ' 00:00:00' : '';
$endDate = isset($_GET['end_date']) ? $_GET['end_date']. ' 23:59:59' : '';
$id_data_server = isset($_GET['ids']) ? $_GET['ids'] : '';
// Siapkan query SQL
$query = "SELECT nama_server, start_time, keterangan, pemasukan, pengeluaran, status, metode_pembayaran, nama_user, nama FROM v_transaksi WHERE 1=1 AND id_data_server IN ($id_data_server)";
// Tambahkan kondisi pencarian
if (!empty($search)) {
$query .= " AND (nama_server LIKE :search OR keterangan LIKE :search OR metode_pembayaran LIKE :search OR status LIKE :search)";
}
// Tambahkan kondisi untuk filter tanggal
if (!empty($startDate)) {
$query .= " AND start_time >= :startDate";
}
if (!empty($endDate)) {
$query .= " AND start_time <= :endDate";
}
// Siapkan pernyataan
$stmt = $pdo->prepare($query);
// Bind parameter pencarian
if (!empty($search)) {
$stmt->bindValue(':search', '%' . $search . '%', PDO::PARAM_STR);
}
// Bind parameter filter tanggal
if (!empty($startDate)) {
$stmt->bindValue(':startDate', $startDate, PDO::PARAM_STR);
}
if (!empty($endDate)) {
$stmt->bindValue(':endDate', $endDate, PDO::PARAM_STR);
}
$stmt->execute();
// Ambil data
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Buat Spreadsheet
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Set header
$sheet->setCellValue('A1', 'Nama Server')
->setCellValue('B1', 'User_Input')
->setCellValue('C1', 'Start Time')
->setCellValue('D1', 'Keterangan')
->setCellValue('E1', 'Pelanggan')
->setCellValue('F1', 'Kas Masuk')
->setCellValue('G1', 'Kas Keluar')
->setCellValue('H1', 'Status')
->setCellValue('I1', 'Metode Pembayaran');
// Isi data
$row = 2; // Mulai dari baris kedua
foreach ($data as $item) {
$sheet->setCellValue('A' . $row, $item['nama_server'])
->setCellValue('B' . $row, $item['nama_user'])
->setCellValue('C' . $row, $item['start_time'])
->setCellValue('D' . $row, $item['keterangan'])
->setCellValue('E' . $row, $item['nama'])
->setCellValue('F' . $row, $item['pemasukan'])
->setCellValue('G' . $row, $item['pengeluaran'])
->setCellValue('H' . $row, $item['status'])
->setCellValue('I' . $row, $item['metode_pembayaran']);
$row++;
}
// Set header untuk download
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="data_export.xlsx"');
header('Cache-Control: max-age=0');
// Tulis file
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
?>