Membuat Report PDF / Report Excel Menggunakan Parameter (Dari - Sampai) pada Yii Framework

Asslamualaikum Wr.Wb hai saya Fahmi Azain. Kali ini saya akan berbagi tutorial tentang cara Membuat Report PDF / Report Excel Menggunakan Parameter (Dari - Sampai) pada Yii Framework.
Pertama kalian harus  memenuhi persyaratan dibawah ini:
Untuk Report Pdf : pasang ekstensi pdf report pada aplikasi yii kalian. dan kalian harus paham bagaimana cara membuat report tersebut.
Untuk Report Excel : pasang ekstensi excel report pada aplikasi yii kalian. atau kalian dapat menggunakan bawaan report excel milik yii.
setelah memenuhi persyaratan diatas kalian bisa mulai membaca tutorial ini.
Oke mari kita mulai!

buatlah fungsi baru pada model kalian atau kalian bisa lihat dibawah ini: 

pada model kalian | contoh. : models/Items.php
public function getMyreport()
        {
            $from=$_REQUEST['from'];
            $until=$_REQUEST['until']; 
        $sql="SELECT * FROM items where CREATED_DATE >= '$from' and CREATED_DATE <= '$until' order by ITEM_ID desc "; // your sql here
        $dataReportItem=new CSqlDataProvider($sql,array(
            'keyField' => 'ITEM_ID',
            'pagination'=>array(
                'pageSize'=>10,
            ),
        )); 
        return $dataReportItem;
        }

lalu tambahkan code dibawah ini pada aksi index. 

pada controller kalian | contoh. : controller/ItemsController.php
public function actionIndex(){
if (!Yii::app()->user->isGuest){
 
                $dataReportItem=Items::model()->getMyreport();
                if(isset($_REQUEST['ExcelReport'])){
                        $from=$_REQUEST['from'];
                        $until=$_REQUEST['until'];
                       Yii::app()->request->sendFile('items_periode_'.$from.'-'.$until.'.xls',
                       $this->renderPartial('view_item_report',array(
            'dataReportItem' =>$ dataReportItem,
                       )),true);                
                }
 
                if(isset($_REQUEST['PdfReport'])){
                        $from=$_REQUEST['from'];
                        $until=$_REQUEST['until'];
                        $mPDF1 = Yii::app()->ePdf->mpdf();
                        $mPDF1->WriteHTML($this->renderPartial('view_item_report',array(
            'dataReportKas'=>$dataReportKas,
                        ), true));
                        $mPDF1->Output('items_periode_'.$from.'-'.$until,"I");
 
                }
}

dan sekarang pada view/index.php kalian dapat menambahkan code seperti dibawah ini: 

pada view kalian | e.g. : view/items/index.php
<form method="post">
            <table>
                <tr>
                    <td>Date From</td>
                    <td>Date To</td>
                </tr>
                <tr>
                    <td><input type="date" name="from" value="$_GET['from']) ? CHtml::encode($_GET['from']) : '' ; ?>" /></td>
                    <td><input type="date" name="until" value="$_GET['until']) ? CHtml::encode($_GET['until']) : '' ; ?>" /></td>
                </tr>
            </table>
        <input type="submit" value="Report to Excel" name="'ExcelReport'">
        <input type="submit" value="Report to Pdf" name="'PdfReport'">
        </form>

tetap dalam view Anda harus membuat file php baru dan salin kode ini: 

pada view anda | contoh. : view/items/view_item_report.php
<h3>Items | Periode php echo $_REQUEST['from']." - ".$_REQUEST['until'];?></h3>
php
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
    'fixedHeader' => true,
    'headerOffset' => 40,
    'type' => 'striped',
    'dataProvider' => $dataReportItem,
    'responsiveTable' => true,
    'template' => "{items}",
        'columns'=>array(
            'ID',
            'ITEM_CODE',
            'ITEM_NAME',
            'ITEM_DESC',            
            'CREATED_DATE', // This is a reference for parms / parameters
        ),
    ));?>
<div align="left">
    <b>Printed By : echo Yii::app()->user->name;?><br/>
Printed At : echo date("d/m/Y H:i:s");?></b>
            <div align="right">Copyright &COPY; php echo date('Y'); ?> By Jsource</div>
</div>
Oke Selesai! Jangan lupa berkata Alhamdulillah telah menyelesaikan masalahnya. Saya berharap itu bekerja pada aplikasi kalian.
Terima kasih Telah Membaca
Terima Kasih!
Butuh bantuan untuk error pada Yii Framework atau Pemrograman yang lain?
Contact Me
Facebook : Fahmi Azain
Twitter      : @Fahmi_Jsource
Instagram : Fahmi_Azain

Latest
Previous
Next Post »
9 Komentar
avatar

tutorialnya sangat membantu..Terima kasih

Balas
avatar

jika ingin report pdf berdasarkan filter user bagaimana?

Balas
avatar

sama saja mbak
tinggal ganti query sama form input, misal mbaknya mau nampilkan data berdasarkan user login:

input type="hidden" name="username" value="user->id?>"
input type="text" name="fieldyangmaudifilter" value="$_GET['fieldyangmaudifilter']) ? CHtml::encode($_GET['fieldyangmaudifilter']) : '' ; ?>"

setelah itu set aja query di fungsi getMyreport() dan sesuaikan seperti yang mbaknya inginkan.

#maaf untuk tag html di komen blogger tidak di perbolehkan jadi saya hapus tanda ' < ' sebelum dan sesudah input #

Balas
avatar

kalo boleh nanya, apa nama ekstensi yang anda gunakan apa untuk reportnya?

Balas
avatar

bisa pakai bawaan default dari yii mbak

Balas
avatar

itu yang mas gunain dafault bawaan yii yaa?

Balas
avatar

Parse error: syntax error, unexpected 'public' (T_PUBLIC) in C:\xampp\htdocs\yiibootstrap\protected\controllers\ItemsController.php on line 2

masalahnya dimana gan?

Balas
avatar

file excelnya masuk ke folder mana ya mas?,
saya udah coba tp saya cari file excelnya ga ketemu

Balas
This comment has been removed by the author. - Hapus