Mencetak Laporan ke MS Excel dari PHP

Mencetak Laporan ke Microsoft Excel dari PHP
Membuat sebuah aplikasi, tentu tidak lepas dari membuat sebuah laporan. Kalau ada Input/ Masukkan, tentu ada Output/ Keluarankan? Kasusnya berbeda lagi apabila output itu hanya sebuah tampilan dialog informasi tanpa harus ada interaksi dengan printer dan lain-lain. Contoh: Website Personal/ Web Pribadi.

Tetapi, untuk sebuah aplikasi katakanlah minimart, inventori, dan lain-lain, mencetak laporan dalam bentuk soft haruslah ada. Cetak laporan dari PHP/HTML secara umum dibuat ke Microsoft Excel atau ke PDF (Portable Document File). Untuk trik kali ini, saya (penulis) akan membagikan sedikit pengetahuan saya tentang bagaimana cara membuat atau mencetak laporan Microsoft Excel dari PHP?

Berikut langkah-langkahnya. :D

Langkah 1:
Jalankan XAMPP dan buat database (sebagai contoh saya buat nama database Raport). Untuk lebih mudahnya silahkan copy dan paste script SQL ini ke dalam SQL Editor favorit Anda :D.
-- --------------------------------------------------------
-- --------------------------------------------------------
-- Host:                         127.0.0.1
-- Server version:               5.5.27 - MySQL Community Server (GPL)
-- Server OS:                    Win32
-- HeidiSQL Version:             8.1.0.4545
-- --------------------------------------------------------

-- Dumping database structure for raport
CREATE DATABASE IF NOT EXISTS `raport` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `raport`;


-- Dumping structure for table raport.tb_login
CREATE TABLE IF NOT EXISTS `tb_login` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(100) NOT NULL,
  `akses` varchar(15) NOT NULL,
  `password` varchar(12) NOT NULL,
  PRIMARY KEY (`no`)
) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=latin1;

-- Dumping data for table raport.tb_login: 25 rows
/*!40000 ALTER TABLE `tb_login` DISABLE KEYS */;
INSERT INTO `tb_login` (`no`, `user`, `akses`, `password`) VALUES
 (1, 'admin', 'admin', 'admin'),
 (2, 'DWI KURNIANTO', 'GURU', 'guru'),
 (3, 'DWI KURNIANTO', 'KURIKULUM', 'kurikulum'),
 (4, 'DWI KURNIANTO', 'WALI KELAS', 'wali'),
 (5, 'ENDANG KUSMIYATI', 'WALI KELAS', 'VIIA'),
 (6, 'MENIK ROHAYATI', 'GURU', 'guru'),
 (7, 'M.SOLEH', 'GURU', 'guru'),
 (8, 'SUPRAPTONO', 'GURU', 'guru'),
 (9, 'ENDANG KUSMIYATI', 'GURU', 'guru'),
 (10, 'TATIK WURIYANTI', 'GURU', 'guru'),
 (11, 'SRIWARNI', 'GURU', 'guru'),
 (12, 'SURAMI', 'GURU', 'guru'),
 (13, 'KUSUMA BASUKI', 'GURU', 'guru'),
 (14, 'SUPARDI', 'GURU', 'guru'),
 (15, 'SUMARTI', 'GURU', 'guru'),
 (16, 'SR BEJO', 'GURU', 'guru'),
 (17, 'NGESTUTUI RAHAYU', 'GURU', 'guru'),
 (18, 'SUDIYARMI', 'GURU', 'guru'),
 (19, 'KRIS HARJITO', 'GURU', 'guru'),
 (20, 'ENDANG PURWASIH', 'GURU', 'guru'),
 (21, 'MULYANI', 'GURU', 'guru'),
 (22, 'UYUNG WIDHI', 'GURU', 'guru'),
 (23, 'EMILIANA', 'GURU', 'guru'),
 (24, 'WINDRAT', 'GURU', 'guru'),
 (25, 'SRI HARTONO', 'GURU', 'guru');
Langkah 2:
Buka PHP Editor kesukaan Anda, kalau PHPBEJO menggunakan Netbeans dan juga Notepad++, dan lain sebagainya, untuk lebih lengkap bisa dilihat di 4 PHP Programming Tools Terbaik.
Buat koneksi ke database dan menampilkan data tabel tb_login di database raport. Untuk lebih lengkap singkat padat dan jelas, silahkan menuliskan kode berikut ini.
Nama File: laporan.php
/* 
-- --------------------------------------------------------
-- --------------------------------------------------------
-- Nama File : laporan.php  
-- Author    : Fitri Ariyanto 
-- Email     : seorang.fitri@gmail.com
-- Website   : http://usersonly.wordpress.com/ || http://phpbejo.blogspot.com 
-- Copyright [c] 2013 Fitri Ariyanto 
-- --------------------------------------------------------
 */
 mysql_connect("localhost","root","") or die("Gagal melakukan Koneksi!");
 mysql_select_db("raport") or die("Gagal memilih Database!");
 
 $query = mysql_query("SELECT * FROM tb_login");
 echo '<center>
<a href="http://www.blogger.com/cetak-laporan.php">Cetak Laporan</a></center>
';
 echo '';
 $no = 1;
 while($data=mysql_fetch_array($query)){
  echo '
   ';
 }
 echo '<table align="center" border="1">
 <tbody>
<tr>
  <td style="background: #EEE; font-weight: bold;">No.</td>
  <td style="background: #EEE; font-weight: bold;">User</td>
  <td style="background: #EEE; font-weight: bold;">Hak Akses</td>
  <td style="background: #EEE; font-weight: bold;">Password</td>
 </tr>
<tr>
    <td>' . $no++ . '.</td>
    <td>' . $data['user'] . '</td>
    <td>' . $data['akses'] . '</td>
    <td>' . $data['password'] . '</td>
   </tr>
</tbody></table>
';

Langkah 3: Copy dan paste di text editor kesukaan Anda :D.
Nama File: cetak-laporan.php
/* 
-- --------------------------------------------------------
-- --------------------------------------------------------
-- Nama File : cetak-laporan.php  
-- Author    : Fitri Ariyanto 
-- Email     : seorang.fitri@gmail.com
-- Website   : http://usersonly.wordpress.com/ || http://phpbejo.blogspot.com 
-- Copyright [c] 2013 Fitri Ariyanto 
-- --------------------------------------------------------
*/
 header("Content-Type: application/force-download");
 header("Cache-Control: no-cache, must-revalidate");
 header("Expires: Sat, 26 Jul 2010 05:00:00 GMT"); 
 header("content-disposition: attachment;filename=laporan_pengguna_login".date('dmY').".xls");
 
 mysql_connect("localhost","root","") or die("Gagal melakukan Koneksi!");
 mysql_select_db("raport") or die("Gagal memilih Database!");
 
 $query = mysql_query("SELECT * FROM tb_login");
 echo '';
 $no = 1;
 while($data=mysql_fetch_array($query)){
  echo '
   ';
 }
 echo '<table align="center" border="1">
 <tbody>
<tr>
  <td style="background: #EEE; font-weight: bold;">No.</td>
  <td style="background: #EEE; font-weight: bold;">User</td>
  <td style="background: #EEE; font-weight: bold;">Hak Akses</td>
  <td style="background: #EEE; font-weight: bold;">Password</td>
 </tr>
<tr>
    <td>' . $no++ . '.</td>
    <td>' . $data['user'] . '</td>
    <td>' . $data['akses'] . '</td>
    <td>' . $data['password'] . '</td>
   </tr>
</tbody></table>
';
 
Pada langkah 3 ini, poin terpenting adalah potongan kode berikut ini:
header("Content-Type: application/force-download");
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 2010 05:00:00 GMT"); 
header("content-disposition: attachment;filename=laporan_pengguna_login".date('dmY').".xls");
Kode ini adalah kode yang harus ada jika kita ingin mencetak data di php ke ms excel. Tanpa kode tersebut sama saja kita tidak membuat laporan berupa download file excel.
Kita juga bisa mengganti filename/ Nama Berkas Excel sesuai kebutuhan kita. Dalam contoh diatas saya menggunakan nama
laporan_pengguna_login".date('dmY').".xls"
Jika ingin mengganti nama filenya, silahkan ganti pada baris berikut:
header("content-disposition: attachment;filename=nama_filenya_sob.xls");
PENTING: JANGAN sampai lupa untuk menambahkan tipe file/ ekstensi ( .XLS ) pada akhir kode, apa bila tidak ada, maka file/ berkas tidak dapat dibuka dengan cara seperti biasa (double click).
Jadi, ketika kita membuat export laporan ke Microsoft Excel, tinggal copy dan paste di bagian atas atau di bawah dokumen PHP rekan-rekan. Kenapa saya menyarankan untuk ditulis di atas/bawah ? Agar mudah dicari dan diedit saja. :D.
Sekian tulisan dari saya, ada kurang dan lebihnya mohon maaf, jika ada kritik saran atau pertanyaan silahkan kontak email/ isi komentar.


URL: https://phpbejo.blogspot.com/2013/10/mencetak-ke-laporan-microsoft-excel-dari-php.html
PHPBEJO: Tutorial Dasar Pemrograman PHP

Share this

Related Posts

Previous
« Prev Post

15 komentar

komentar
18 Juli 2014 pukul 14.43 delete

gmn kalo di page nya ada menu dll.
tp cuma table aj yg mau di export

Reply
avatar
22 Desember 2014 pukul 03.01 delete

itu bisa dikembangkan kok, dan contoh diatas cuma tabel saja yang dicetak / di ekspor ke EXCEL..
untuk modifikasi ganti saja script kode mulai dibawah
while($data=mysql_fetch_array($query)){...
....

sesuaikan dengan konten tabel pada database..

Reply
avatar
20 April 2015 pukul 10.17 delete

sip gan.. terima kasih kunjungannya..

Reply
avatar
20 April 2015 pukul 10.17 delete

sama-sama mas.. semoga bermanfaat...

Reply
avatar
11 Desember 2015 pukul 10.21 delete

mas, setelah di download malah corrupt ya? padahal formatnya juga udah saya gonta ganti dari .xlsx ke .xls begitu juga sebaliknya.. mohon pencerahannya mas..

Reply
avatar
21 Desember 2015 pukul 10.47 delete

gan kalau mau export data mysql ke excel tapi sesuai Nim atau id table yang dipilih ..itu gimana caranya ?

Reply
avatar
7 Februari 2016 pukul 19.06 delete

bisa jadi salah data atau tabelnya.

coba paste data tabel sql + kode nya disini.. kita bahas bersama

Reply
avatar
7 Februari 2016 pukul 19.08 delete

ditambah 'where clause' pada fungsi sql query nya gan..

misal kita mau export nim mhs0001 saja, maka querynya kira-kira seperti ini

select * from tabelsiswa WHERE nim='mhs0001'

Reply
avatar
8 Maret 2016 pukul 19.40 delete

gan, kalo ngatur width rownya gimana caranya?

Reply
avatar
30 Maret 2016 pukul 00.27 delete

Ngaturnya kalau seperti tutor diatas, lewat echo table nya gan.. jadi sebelum buat cetak.php ada baiknya klo agan buat dlu table-table dengan html, sesuaikan header table kolom marge row/column nya, kalau sudah sesuai dengan tampilan report yang diinginkan, tinggal di konversi ke php-nya

Reply
avatar
30 November 2016 pukul 09.36 delete

masbro ane tambah ke program ane ada "error Warning: Cannot modify header information - headers already sent by" kenapa ya?

Reply
avatar
31 Desember 2016 pukul 13.01 delete

coba lihat kodenya.

atau mas sakim tambahkan kode ini dibawah tag <?php
error_reporting(0);

Reply
avatar
4 Oktober 2018 pukul 12.38 delete

mkasih sudah berbagi saya pengen coba gan mudah2 berhasil

Indahnya saling berbagi pengetahuan dan keilmuan. Silahkan singgah

Kunjungi website Kampus saya : Atma Luhur

website saya : Naliyana

Reply
avatar