导入Excel文件需要两个扩展:PHPOffice/PHPExcel和moonlandsoft/yii2-phpexcel,这两个扩展中,PHPOffice/PHPExcel是基础的Excel文件接口,moonlandsoft/yii2-phpexcel提供了导入和导出的功能。

引入PHPOffice/PHPExcel

官网地址:

https://github.com/PHPOffice/PHPExcel

下载后解压,拷贝到vendor/PHPExcel目录下,整体目录结构如下:

Yii 2 —— 导入Excel文件_第1张图片

PHPExcel没有使用命名空间,因此需要用require来引入,代码类似如下:

$vendorDir = $GLOBALS['config']['vendorPath'];            
require $vendorDir . '\PHPExcel\Classes\PHPExcel.php';


注:在使用moonlandsoft/yii2-phpexcel之前,需要执行上述代码引入PHPExcel。

引入moonlandsoft/yii2-phpexcel

官网地址:

https://github.com/moonlandsoft/yii2-phpexcel

下载后解压,拷贝到vendor目录下,整体目录结构如下:

Yii 2 —— 导入Excel文件_第2张图片

打开vendor/yiisoft/extensions.php,增加如下内容:

'yii2-phpexcel' =>            
array(              
'name' => 'yii2-phpexcel',              
'version' => '1.4.3.3',              
'alias' =>              
array(              
'@moonland/phpexcel' => $vendorDir . '/moonland/phpexcel',              
),              
),


导入Excel文件

参考官网例程,如下:

use \moonland\phpexcel\Excel;

$data = Excel::import('d:\log\import.xlsx',[              
'setFirstRecordAsKeys' => true,              
'setIndexSheetByName' => true,              
'getOnlySheet' => 'sheet1',              
]);              
echo json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);


excel文档内容如下:

image

 

导入结果如下:

[            
{              
"姓名": "张飞",              
"性别": "男",              
"生日": "01-01-17",              
"家长微信号": "wx_zhangfei"              
},              
{              
"姓名": "关羽",              
"性别": "男",              
"生日": "01-02-17",              
"家长微信号": "wx_guanyu"              
},              
{              
"姓名": "赵云",              
"性别": "男",              
"生日": "01-03-17",              
"家长微信号": "wx_zhaoyun"              
},              
{              
"姓名": "马超",              
"性别": "男",              
"生日": "01-04-17",              
"家长微信号": "wx_machao"              
}              
]