laravel PHPExcel导出
composer.json中加入
"require": { "maatwebsite/excel": "~2.1.0" }
执行命令
composer update maatwebsite/excel
执行成功后会在config目录下生成文件excel.php。
修改生成的excel.php文件
大约是在431行,将'to_ascii' => true,改为
'to_ascii' => false,
在 config/app.php 中注册服务提供者到 providers 数组:
Maatwebsite\Excel\ExcelServiceProvider::class,
在 config/app.php 中注册门面到 aliases 数组:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
如果想要对Laravel Excel进行更多的自定义配置,执行如下Artisan命令:
php artisan vendor:publish
执行成功后会在 config 目录下生成一个配置文件 excel.php 。
然后实现导出、导入功能:
<?php namespace App\Http\Controllers; use App\Http\Requests; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Excel; class ExcelController extends Controller { public function export() { $cellData = [ ['id','姓名','年龄'], ['10001','张三','19'], ['10002','李四','22'], ['10003','王五','23'], ['10004','赵六','19'], ['10005','猴七','22'], ]; $name = iconv('UTF-8', 'GBK', '成员信息'); Excel::create($name,function($excel) use ($cellData){ $excel->sheet('score', function($sheet) use ($cellData){ $sheet->rows($cellData); }); })->store('xls')->export('xls'); } public function import(){ $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '成员信息').'.xls'; Excel::load($filePath, function($reader) { $data = $reader->all(); dump($data); }); exit; } }
如果你要导出csv或者xlsx文件,只需将export方法中的参数改成csv或xlsx。
store方法,将该Excel文件保存到服务器上,文件默认保存到storage/exports目录下,iconv()是为了防止文件名中文乱码。
注:解决导出Excel表格中数字自动变成科学记数法,在数字末尾加上"\t"即可,必须用双引号