I use Yii to build my project and I find a new way to use PHPExcel (from codeplex) with Yii framework. I’ve read some posts about PHPExcel and Yii, but it’s not very useful for me or PHPExcel’s not as an extension of Yii. So I decided to integrate PHPExcel as an extension for Yii.
First, you need PHPExcel library, which I attach with my topic.
Then, following these steps:
- Copy all files and folders in PHPExcel4Yii/ to folder:
protected/extensions/
-
Add to config file: main.php:
'import' => array( ...
'application.extensions.*',
...)
+
'components' => array(
...
'excel'=>array(
'class'=>'application.extensions.PHPExcel',
),
...
)
-
New functions is added:
- Create a new excel object:
$objPHPExcel = Yii::app()->excel;
(required when using PHPExcel with Yii framework)
+ Save a excel file (excel 2007):
$objPHPExcel->saveExcel2007($objPHPExcel,$filename);
+ Create a 2007 excel object reader :
$objReader = $objPHPExcel->readExcel2007();
- You only need start with
$objPHPExcel = Yii::app()->excel;
and use PHPExcel like documentation in phpexcel.codeplex.com/releases/view/45412 (I’m newbie so that I can’t post link )
Example code:
$model = new DemoModel();
$labels = $model->attributeNames();
$data = $model->findAll();
//Khởi tạo đối tượng excel
//Begin an excel object
$objPHPExcel = Yii::app()->excel;
//Đặt giá trị cho các cel tương ứng trong file excel
//Set labels in excel file
$objPHPExcel->getActiveSheet()->setCellValue('A1',$labels[0]);
$objPHPExcel->getActiveSheet()->setCellValue('B1',$labels[1]);
$objPHPExcel->getActiveSheet()->setCellValue('C1',$labels[2]);
$objPHPExcel->getActiveSheet()->setCellValue('D1',$labels[3]);
$i = 2;
foreach($data as $record){
//Lấy giá trị vào các cell của file excel
//Set value for each cell
$objPHPExcel->getActiveSheet()->setCellValue('A'. $i,$record->id);
$objPHPExcel->getActiveSheet()->setCellValue('B'. $i,$record->name);
$objPHPExcel->getActiveSheet()->setCellValue('C'. $i,$record->homepage);
$objPHPExcel->getActiveSheet()->setCellValue('D'. $i,$record->description);
$i++;
}
//Định giá trị về độ rộng các cột trong file excel
//Set width for each B,C,D cell
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(24);
objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(24);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(24);
//Tên file
//file name
$filename = "abc.xlsx";
//Lưu file
//Save to abc.xlsx file
// You can use like PHPExcel documentation from codeplex:
//$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
//$objWriter->save($filename);
$objPHPExcel->saveExcel2007($objPHPExcel,$filename);