Pabrik Software Riau – Cara Membuat Laporan Excel, PDF dan Word dengan PHP
Membuat laporan dalam bentuk Excel, PDF, dan Word merupakan bagian penting dalam proses pengembangan software. Salah satu bahasa pemrograman yang dapat digunakan untuk membuat laporan-laporan tersebut adalah PHP. Dalam artikel ini, kami akan membahas cara membuat laporan Excel, PDF, dan Word dengan PHP.
Membuat Laporan Excel dengan PHP
Laporan Excel dapat dibuat dengan menggunakan library PHPExcel. Library tersebut dapat didownload dari situs resminya, https://phpexcel.codeplex.com/. Berikut adalah contoh kode PHP yang digunakan untuk membuat laporan Excel yang berisi data dari database:
“`
getProperties()->setCreator(“RajaPutraMedia”)
->setLastModifiedBy(“RajaPutraMedia”)
->setTitle(“Data Barang”)
->setSubject(“Laporan Excel”)
->setDescription(“Test document for Office 2017 XLSX, generated using PHP classes.”)
->setKeywords(“office 2017 openxml php”)
->setCategory(“Laporan”);
//add style
$styleArray = [
‘font’ => [
‘bold’ => true,
‘color’ => [
‘rgb’ => ‘FFFFFF’
]
],
‘fill’ => [
‘type’ => PHPExcel_Style_Fill::FILL_SOLID,
‘startcolor’ => [
‘rgb’ => ‘2ecc71’
]
]
];
$objPHPExcel->getActiveSheet()->getStyle(‘A1:E1’)->applyFromArray($styleArray);
//header
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(‘A1’, ‘Kode’)
->setCellValue(‘B1’, ‘Nama Barang’)
->setCellValue(‘C1’, ‘Harga Beli’)
->setCellValue(‘D1’, ‘Harga Jual’)
->setCellValue(‘E1’, ‘Stok’);
//query
$sql = “SELECT * FROM `tbl_barang`”;
$query = mysqli_query($koneksi, $sql);
$num=2;
while($row = mysqli_fetch_array($query))
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(‘A’.$num, $row[‘kode’])
->setCellValue(‘B’.$num, $row[‘nama_barang’])
->setCellValue(‘C’.$num, $row[‘harga_beli’])
->setCellValue(‘D’.$num, $row[‘harga_jual’])
->setCellValue(‘E’.$num, $row[‘stok’]);
$num++;
//style content
$styleArray = [
‘borders’ => [
‘allborders’ => [
‘style’ => PHPExcel_Style_Border::BORDER_THIN,
‘color’ => [
‘rgb’ => ‘651782’
]
]
]
];
$objPHPExcel->getActiveSheet()->getStyle(‘A1:E’.($num-1))->applyFromArray($styleArray);
//save
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: attachment;filename=”Data_Barang.xlsx”‘);
header(‘Cache-Control: max-age=0’);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
$objWriter->save(‘php://output’);
exit;
?>
“`
Pada kode di atas, pertama-tama dilakukan koneksi ke database dan membuat objek PHPExcel. Setelah itu, dilakukan pengaturan property seperti judul dokumen dan header laporan. Selanjutnya, dilakukan query ke database untuk mengambil data yang akan dimasukkan ke dalam laporan. Terakhir, dilakukan styling dan penyimpanan file.
Membuat Laporan PDF dengan PHP
Laporan PDF dapat dibuat dengan menggunakan library PHP library TCPDF. Library tersebut dapat didownload dari situs resminya, https://tcpdf.org/. Berikut adalah contoh kode PHP yang digunakan untuk membuat laporan PDF yang berisi data dari database:
“`
SetCreator(‘RajaPutraMedia’)
->SetAuthor(‘RajaPutraMedia’)
->SetTitle(‘Data Barang’)
->SetSubject(‘Laporan PDF’);
//header
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, ‘Laporan PDF’, ‘Test document for Office 2017 XLSX, generated using PHP classes.’);
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, ”, PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, ”, PDF_FONT_SIZE_DATA));
//add page
$pdf->AddPage();
//add style
$style = [
‘border’ => 0,
‘padding’ => ‘auto’,
‘fgcolor’ => [0, 0, 0],
‘bgcolor’ => false,
‘font’ => ‘helvetica’,
‘font-size’ => 10,
‘font-style’ => ”,
‘font-color’ => [0, 0, 0],
‘width’ => ‘auto’,
‘height’ => ‘auto’,
‘text-align’ => ‘center’,
‘text-decoration’ => ‘none’,
‘line-height’ => 1,
];
//query
$sql = “SELECT * FROM `tbl_barang`”;
$query = mysqli_query($koneksi, $sql);
$num=1;
$html = ‘
Kode | Nama Barang | Harga Beli | Harga Jual | Stok |
---|---|---|---|---|
‘.$row[‘kode’].’ | ‘.ucfirst($row[‘nama_barang’]).’ | ‘.$row[‘harga_beli’].’ | ‘.$row[‘harga_jual’].’ | ‘.$row[‘stok’].’ |
‘;
$pdf->writeHTML($html, true, false, true, false, ”);
//save
$pdf->Output(‘Data_Barang.pdf’, ‘D’);
?>
“`
Pada kode di atas, pertama-tama dilakukan koneksi ke database dan membuat objek TCPDF. Setelah itu, dilakukan pengaturan property seperti judul dokumen dan header laporan. Terakhir, dilakukan query ke database untuk mengambil data yang akan dimasukkan ke dalam laporan. Data tersebut kemudian diolah dan ditampilkan dalam bentuk tabel menggunakan writeHTML() dan disimpan dalam bentuk file PDF.
Membuat Laporan Word dengan PHP
Laporan Word dapat dibuat dengan menggunakan library PHPWord. Library tersebut dapat didownload dari situs resminya, https://github.com/PHPOffice/PHPWord. Berikut adalah contoh kode PHP yang digunakan untuk membuat laporan Word yang berisi data dari database:
“`
addSection();
$header = $section->addHeader();
$table = $header->addTable();
$col = count($data[0]);
$headerRow = $table->addRow();
$table->addCell(1500)->addText(‘Kode’, array(‘bold’ => true));
$table->addCell(2400)->addText(‘Nama Barang’, array(‘bold’ => true));
$table->addCell(2400)->addText(‘Harga Beli’, array(‘bold’ => true));
$table->addCell(2400)->addText(‘Harga Jual’, array(‘bold’ => true));
$table->addCell(2400)->addText(‘Stok’, array(‘bold’ => true));
//query
$sql = “SELECT * FROM `tbl_barang`”;
$query = mysqli_query($koneksi, $sql);
$num=2;
while($row = mysqli_fetch_array($query))
$table->addRow();
$table->addCell(1500)->addText($row[‘kode’]);
$table->addCell(2400)->addText(ucfirst($row[‘nama_barang’]));
$table->addCell(2400)->addText($row[‘harga_beli’]);
$table->addCell(2400)->addText($row[‘harga_jual’]);
$table->addCell(2400)->addText($row[‘stok’]);
$num++;
//save
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, ‘Word2007’);
$objWriter->save(‘Data_Barang.docx’);
?>
“`
Pada kode di atas, pertama-tama dilakukan pembuatan objek PHPWord. Selanjutnya, dilakukan pengaturan properti untuk header dan tabel laporan. Terakhir, dilakukan query ke database untuk mengambil data yang akan dimasukkan ke dalam laporan dan data tersebut kemudian ditampilkan dalam bentuk tabel pada laporan.
FAQ
1. Apakah semua format laporan dapat dibuat dengan PHP?
Jawaban: PHP dapat digunakan untuk membuat laporan dalam berbagai format seperti Excel, PDF, Word, dan lainnya.
2. Bagaimana cara mengirim laporan ke email menggunakan PHP?
Jawaban: Untuk mengirim laporan ke email menggunakan PHP, caranya adalah dengan menggunakan library PHPMailer. Library tersebut dapat didownload dari situs resminya, https://github.com/PHPMailer/PHPMailer. Berikut adalah contoh kode PHP yang digunakan untuk mengirim laporan Excel ke email:
“`
getProperties()->setCreator(“RajaPutraMedia”)
->setLastModifiedBy(“RajaPutraMedia”)
->setTitle(“Data Barang”)
->setSubject(“Laporan Excel”)
->setDescription(“Test document for Office 2017 XLSX, generated using PHP classes.”)
->setKeywords(“office 2017 openxml php”)
->setCategory(“Laporan”);
//add style
$styleArray = [
‘font’ => [
‘bold’ => true,
‘color’ => [
‘rgb’ => ‘FFFFFF’
]
],
‘fill’ => [
‘type’ => PHPExcel_Style_Fill::FILL_SOLID,
‘startcolor’ => [
‘rgb’ => ‘2ecc71’
]
]
];
$objPHPExcel->getActiveSheet()->getStyle(‘A1:E1’)->applyFromArray($styleArray);
//header
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(‘A1’, ‘Kode’)
->setCellValue(‘B1’, ‘Nama Barang’)
->setCellValue(‘C1’, ‘Harga Beli’)
->setCellValue(‘D1’, ‘Harga Jual’)
->setCellValue(‘E1’, ‘Stok’);
//query
$sql = “SELECT * FROM `tbl_barang`”;
$query = mysqli_query($koneksi, $sql);
$num=2;
while($row = mysqli_fetch_array($query))
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(‘A’.$num, $row[‘kode’])
->setCellValue(‘B’.$num, $row[‘nama_barang’])
->setCellValue(‘C’.$num, $row[‘harga_beli’])
->setCellValue(‘D’.$num, $row[‘harga_jual’])
->setCellValue(‘E’.$num, $row[‘stok’]);
$num++;
//style content
$styleArray = [
‘borders’ => [
‘allborders’ => [
‘style’ => PHPExcel_Style_Border::BORDER_THIN,
‘color’ => [
‘rgb’ => ‘651782’
]
]
]
];
$objPHPExcel->getActiveSheet()->getStyle(‘A1:E’.($num-1))->applyFromArray($styleArray);
//save
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: attachment;filename=”Data_Barang.xlsx”‘);
header(‘Cache-Control: max-age=0’);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
$objWriter->save(‘Data_Barang.xlsx’);
//kirim email
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = ‘UTF-8’;
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘ssl’;
$mail->Host = “smtp.gmail.com”;
$mail->Port = “465”;
$mail->Username = “[email protected]”;
$mail->Password = “password”;
$mail->SetFrom(’[email protected]’, ‘RajaPutraMedia’);
$mail->AddAddress(’[email protected]’, ‘RajaPutraMedia’);
$mail->Subject = ‘Laporan Excel’;
$mail->Body = ‘Laporan Excel terlampir.’;
$mail->AddAttachment(‘Data_Barang.xlsx’);
if(!$mail->Send())
echo ‘Pesan gagal dikirim.’;
echo ‘Mailer Error: ‘ . $mail->ErrorInfo;
else
echo ‘Pesan telah dikirim.’;
?>
“`
Pada kode di atas, setelah laporan Excel dibuat, dilakukan pembuatan objek PHPMailer. Selanjutnya, dilakukan pengaturan properti seperti alamat email pengirim, email tujuan, subjek, dan isi email. Terakhir, dilakukan pengiriman laporan Excel sebagai attachment melalui email.