Another Yii CGridView-to-Excel exporter using PHPExcel, based on EExcelView Yii extension
Another Yii CGridView-to-Excel exporter using PHPExcel, based on EExcelView Yii extension, (*1)
Tested with:, (*2)
http://tellibus.com/lab/tlbExcelView, (*3)
This is an example of use of tlbExcelView in the controller and view:, (*4)
Based on the standard Gii / Giix admin action, (*5)
<?php public function actionAdmin() { $model = new Model('search'); $model->unsetAttributes(); if (isset($_GET['Model'])) { $model->attributes = $_GET['Model']; } if (isset($_GET['export'])) { $production = 'export'; } else { $production = 'grid'; } $this->render('admin', array('model' => $model, 'production' => $production)); } ?>
clientScript->registerScript('search', " $('#exportToExcel').click(function(){ window.location = '". $this->createUrl('admin') . "?' + $(this).parents('form').serialize() + '&export=true'; return false; }); $('.search-form form').submit(function(){ $.fn.yiiGridView.update('some-grid', { data: $(this).serialize() }); return false; }); "); ?> …renderPartial('_search', array('model' => $model)); ?>… widget('application.components.widgets.tlbExcelView', array( 'id' => 'some-grid', 'dataProvider' => $model->search(), 'grid_mode' => $production, // Same usage as EExcelView v0.33 //'template' => "{summary}\n{items}\n{exportbuttons}\n{pager}", 'title' => 'Some title - ' . date('d-m-Y - H-i-s'), 'creator' => 'Your Name', 'subject' => mb_convert_encoding('Something important with a date in French: ' . utf8_encode(strftime('%e %B %Y')), 'ISO-8859-1', 'UTF-8'), 'description' => mb_convert_encoding('Etat de production généré à la demande par l\'administrateur (some text in French).', 'ISO-8859-1', 'UTF-8'), 'lastModifiedBy' => 'Some Name', 'sheetTitle' => 'Report on ' . date('m-d-Y H-i'), 'keywords' => '', 'category' => '', 'landscapeDisplay' => true, // Default: false 'A4' => true, // Default: false - ie : Letter (PHPExcel default) 'pageFooterText' => '&RThis is page no. &P of &N pages', // Default: '&RPage &P of &N' 'automaticSum' => true, // Default: false 'decimalSeparator' => ',', // Default: '.' 'thousandsSeparator' => '.', // Default: ',' //'displayZeros' => false, //'zeroPlaceholder' => '-', 'sumLabel' => 'Column totals:', // Default: 'Totals' 'borderColor' => '00FF00', // Default: '000000' 'bgColor' => 'FFFF00', // Default: 'FFFFFF' 'textColor' => 'FF0000', // Default: '000000' 'rowHeight' => 45, // Default: 15 'headerBorderColor' => 'FF0000', // Default: '000000' 'headerBgColor' => 'CCCCCC', // Default: 'CCCCCC' 'headerTextColor' => '0000FF', // Default: '000000' 'headerHeight' => 10, // Default: 20 'footerBorderColor' => '0000FF', // Default: '000000' 'footerBgColor' => '00FFCC', // Default: 'FFFFCC' 'footerTextColor' => 'FF00FF', // Default: '0000FF' 'footerHeight' => 50, // Default: 20 'zoomScale' => 75, // Default: 100 'columns' => $grid // an array of your CGridColumns )); ?>
<?php $form = $this->beginWidget('GxActiveForm', array( 'action' => Yii::app()->createUrl($this->route), 'method' => 'get', )); ?> … <div class="row buttons"> <?php echo GxHtml::submitButton(Yii::t('app', 'Search')); ?> <?php echo GxHtml::button(Yii::t('app', 'Export to Excel (xls)'), array('id' => 'exportToExcel')); ?> </div> <?php $this->endWidget(); ?>