19
Apr
10

generate excel report from PHP

Here’s an easiest ways to generate excel report from PHP with XML. Ga perlu expert XML, tinggal ngedit dikit dah bisa bikin laporan dalam bentuk excel. Gini caranya:

  1. Bikin format laporan menggunakan Ms Excel, lalu save as XML Spreadsheet (*.xml)
  2. Format Excel

  3. Open with Notepad ato boleh pake IDE lain terserah. Di sini aku pake Zend Studio.
  4. Hapus 2 baris pertama,
  5. <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?>
    
  6. Lalu ganti dengan baris perintah ini:
  7. <?
    header("Content-type: application/octet-stream");
    // file name
    header("Content-disposition: attachment; filename=Daftar Surya.xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    echo "<?xml version=\"1.0\"?><?mso-application progid=\"Excel.Sheet\"?>";
    ?>
    

    filename dapat diganti sesuai dengan keinginan.

  8. Cari string ss:ExpandedRowCount, lalu ubah nilainya dengan jumlah data dalam table database ditambah dengan nilai awal ExpandedRowCount. Contoh:
  9. <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="4" x:FullColumns="1" x:FullRows="1">
    

    diganti dengan

    <?
     	// num rows
     	mysql_connect("localhost","surya","kebo");
     	mysql_select_db("db_surya") or die(mysql_error());
     	
     	$query = "select * from t_pelanggan";
     	$hasil_jml = mysql_query($query) or die(mysql_error());
     	$jml_data = mysql_num_rows($hasil_jml);
     ?>
      <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="<?echo 4+$jml_data?>" x:FullColumns="1" x:FullRows="1">
    
  10. Masukkan data dari database ke dalam xml.
  11. <Row ss:Index="2" ss:StyleID="s24">
        <Cell ss:StyleID="s30"><Data ss:Type="String">No</Data></Cell>
        <Cell ss:StyleID="s30"><Data ss:Type="String">Nama</Data></Cell>
        <Cell ss:StyleID="s30"><Data ss:Type="String">Alamat</Data></Cell>
        <Cell ss:StyleID="s30"><Data ss:Type="String">No Telpon</Data></Cell>
       </Row>
       <Row>
        <Cell ss:StyleID="s28"><Data ss:Type="Number">1</Data></Cell>
        <Cell ss:StyleID="s28"><Data ss:Type="String">Surya</Data></Cell>
        <Cell ss:StyleID="s28"><Data ss:Type="String">Medan</Data></Cell>
        <Cell ss:StyleID="s28"><Data ss:Type="String">081</Data></Cell>
       </Row>
       <Row>
    

    setelah dimasukkan skrip php:

    <Row ss:Index="2" ss:StyleID="s24">
        <Cell ss:StyleID="s30"><Data ss:Type="String">No</Data></Cell>
        <Cell ss:StyleID="s30"><Data ss:Type="String">Nama</Data></Cell>
        <Cell ss:StyleID="s30"><Data ss:Type="String">Alamat</Data></Cell>
        <Cell ss:StyleID="s30"><Data ss:Type="String">No Telpon</Data></Cell>
       </Row>
       <?
       		$x=1;
       		while ($data = mysql_fetch_array($hasil_jml)) {
       ?>
       <Row>
        <Cell ss:StyleID="s28"><Data ss:Type="Number"><?echo $x++;?></Data></Cell>
        <Cell ss:StyleID="s28"><Data ss:Type="String"><?echo $data["nama"]?></Data></Cell>
        <Cell ss:StyleID="s28"><Data ss:Type="String"><?echo $data["alamat"]?></Data></Cell>
        <Cell ss:StyleID="s28"><Data ss:Type="String"><?echo $data["no_telp"]?></Data></Cell>
       </Row>
       <?
       		}
       ?>
       <Row>
    
  12. Finish. Jika skrip dijalankan, maka akan keluar window File Download.
  13. Download Excel
    Hasil Laporan


4 Responses to “generate excel report from PHP”


  1. 1 zoro
    15 September 2011 at 8:12 pm

    tidak ada contoh untuk di download?
    kerena saya udah coba mengikuti langkah2 di atas tapi tetap tidak jalan..

  2. 3 zero
    10 October 2012 at 10:49 am

    klo di excel nya ada gambar nya gmn? ketika di save as ke xlm gambar tidak bisa tampil.??

    • 19 October 2012 at 10:38 am

      Hehehe.. Pertanyaan yang bagus..
      Saya sendiri juga masih belajar mas, belum begitu expert..
      Klo tidak salah bisa sih pake XML (harus belajar lagi)..
      Klo menggunakan gambar, biasanya aku pake fpdf untuk membuat laporan dari PDF.
      Tapi itu pertanyaan yang bagus, saya juga akan mencobanya..
      Kalo sampeyan sudah tahu caranya di-share ya? Thx.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Latest Tweets

April 2010
S M T W T F S
« Feb   Jul »
 123
45678910
11121314151617
18192021222324
252627282930  

Blog Stats

  • 47,320 hits

%d bloggers like this: