zuixian113 2017-09-18 23:07:20 5018次浏览 1条回复 6 0 0

0、下载PHPExcel 下载phpexcel地址:https://github.com/PHPOffice/PHPExcel/archive/1.8.1.zip 下载完成后,解压PHPExcel-1.8.1.zip文件,进入Classes文件夹目录,复制里面的子文件及子文件夹内容(即类文件)。 0.png

1、将PHPExcel类文件夹放入libs 在yii2根目录下,新建libs文件夹,并将下载好的PHPExcel类文件夹放入libs文件夹下

1-1.png

1-2.png

2、配置web.php,加入PHPExcel.php类 在D:\wamp\Apache2.2\htdocs\myyii2\config文件夹下,打开web.php文件 添加如下代码: Yii::$classMap['PHPExcel']='@app/libs/PHPExcel.php';

2-1.png

2-2.png

3、创建PHPExcel导出控制器 在D:\wamp\Apache2.2\htdocs\myyii2\controllers文件夹下创建ExportController.php控制器文件。 3-1.png

添加以下代码:

<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\Country;
use PHPExcel;

class ExportController extends Controller
{
	public function actionExport(){
		$data=Country::find()->asArray()->all();
		if(!$data){
			return $this->redirect(['Country/index']);
		}else{
			$objPHPExcel=new PHPExcel();
			$objPHPExcel->getProperties()->setCreator("zhangsan")  
            ->setLastModifiedBy("lisi")  
            ->setTitle("my title")  
            ->setSubject("my subject")  
            ->setDescription("my description")  
            ->setKeywords("my keywords")  
            ->setCategory("my category");  
			
			// 设置列宽
			$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
			$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
			
			// 设置表头  
			$objPHPExcel->setActiveSheetIndex(0)  
					->setCellValue('A1', '代码')  
					->setCellValue('B1', '国家')  
					->setCellValue('C1', '地区'); 
			$n=2;
			// 设置内容  
			foreach($data as $v){
				$objPHPExcel->getActiveSheet()->setCellValue('A'.$n,$v['code']);  
				$objPHPExcel->getActiveSheet()->setCellValue('B'.$n,$v['name']);  
				$objPHPExcel->getActiveSheet()->setCellValue('C'.$n,$v['population']); 
				$n=$n+1;
			}
			// 重命名    
			$objPHPExcel->getActiveSheet()->setTitle('test-sheet');  
			$objPHPExcel->setActiveSheetIndex(0);  
			// 输出  
			header('Content-Type: application/vnd.ms-excel');  
			header('Content-Disposition: attachment;filename="test.xls"');  
			header('Cache-Control: max-age=0');    
			$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  //注意,要加“\”,否则会报错
			$objWriter->save('php://output');  	
		}
	}
}

4、执行控制器中的export动作 在浏览器中输入网址:http://localhost/myyii2/web/index.php?r=export/export,回车执行excel导出动作。 4-1.png

双击打开excel文件核对excel内容是否与代码设定的内容一致 4-2.png

右键test.xls文件,点击属性-->详细信息,发现属性设置与代码中设置的表格属性一致。 4-3.png

  • 回复于 2018-06-06 10:40 举报

    此教程基于基础模板(basic版本)
    如果是高级模板,则在对应的backend或frontend里面的\config\main-local.php文件里的做相应的配置

    Yii::$classMap['PHPExcel']='@app/libs/PHPExcel.php';
    Yii::$classMap['IOFactory']='@app/libs/PHPExcel/IOFactory.php';
    Yii::$classMap['PHPExcelSharedDate']='@app/libs/PHPExcel/Shared/Date.php';

您需要登录后才可以回复。登录 | 立即注册