[疑难解答] laravel5.5 中使用laravel-excel

[复制链接]
haoyangtian实名认证 手机认证 视频认证 发表于 2018-7-24 14:38:48 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  1,使用Composer安装依赖
  在Laravel项目根目录下使用Composer安装依赖:

  1. composer require maatwebsite/excel ~2.1
复制代码

ps:一定要加上~2.1!!!因为现在已经更新到3.0版本了,如果你不加的话,会安装最新的3.0版本!等运行时候就会报错,类似下面这样的报错

  Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)Call to undefined method Maatwebsite\Excel\Excel::create(),

  2,安装后,修改设置
  在config/app.php中注册服务提供者到providers数组:

  1. Maatwebsite\Excel\ExcelServiceProvider::class,
复制代码

  在config/app.php中注册门面到aliases数组:

  1. 'Excel' => Maatwebsite\Excel\Facades\Excel::class,
复制代码

  执行Artisan命令:

  1. php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
复制代码

  执行成功后会在config目录下生成文件excel.php。
  修改生成的excel.php文件

大约是在431行,将'to_ascii' => true,改为

  'to_ascii' => false,

  3、测试Excel文件
  创建一个控制器ExcelController.php:

  1. php artisan make:controller ExcelController
复制代码

  然后在routes.php中定义相关路由:

  1. Route::get('excel/export','ExcelController@export');

  2.   Route::get('excel/import','ExcelController@import');
复制代码

  然后实现导出、导入功能:

  1. namespace App\Http\Controllers;

  2.   use App\Http\Requests;

  3.   use Illuminate\Http\Request;

  4.   use App\Http\Controllers\Controller;

  5.   use Excel;

  6.   class ExcelController extends Controller

  7.   {

  8.   public function export()

  9.   {

  10.   $cellData = [

  11.   ['id','姓名','年龄'],

  12.   ['10001','张三','19'],

  13.   ['10002','李四','22'],

  14.   ['10003','王五','23'],

  15.   ['10004','赵六','19'],

  16.   ['10005','猴七','22'],

  17.   ];

  18.   $name = iconv('UTF-8', 'GBK', '成员信息');

  19.   Excel::create($name,function($excel) use ($cellData){

  20.   $excel->sheet('score', function($sheet) use ($cellData){

  21.   $sheet->rows($cellData);

  22.   });

  23.   })->store('xls')->export('xls');

  24.   }

  25.   public function import(){

  26.   $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '成员信息').'.xls';

  27.   Excel::load($filePath, function($reader) {

  28.   $data = $reader->all(); dump($data);

  29.   });

  30.   exit;

  31.   }

  32.   }
复制代码

  如果你要导出csv或者xlsx文件,只需将export方法中的参数改成csv或xlsx。
  store方法,将该Excel文件保存到服务器上,文件默认保存到storage/exports目录下,iconv()是为了防止文件名中文乱码。
  访问 http://youdemain/excel/export
  访问 http://youdemain/excel/import

回复

使用道具 举报

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

本版积分规则

专注源码分享,教程分享
全国服务电话

187-8198-7163

周一至周8:00-22:00

反馈建议

cdhaoyt@163.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.2© 2001-2013 Comsenz Inc.( 蜀ICP备16032957号-1