Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解


Posted in PHP onOctober 11, 2017

1、简介

本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍吧。

Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,从而方便我们以优雅的、富有表现力的代码实现Excel/CSV文件的导入和 导出 。

该项目的GitHub地址是: https://github.com/Maatwebsite/Laravel-Excel。

本地下载地址:http://xiazai.3water.com/201710/yuanma/Laravel-Excel-2.1(3water.com).rar

2、安装&配置

使用Composer安装依赖

本文我们将在Laravel中使用Laravel Excel简单实现Excel文件的导入和导出。

首先进入Laravel项目根目录下使用Composer安装依赖:

composer require maatwebsite/excel=~2.0

安装后的设置

在 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 。

3、导出Excel文件

为了演示Laravel Excel相关功能,我们为本测试创建一个干净的控制器ExcelController.php:

php artisan make:controller ExcelController --plain

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

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

接下来我们先在ExcelController.php中定义export方法实现导出功能:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Excel;

class ExcelController extends Controller
{
 // Excel 文件到处功能

 public function export()
 {
  $cellData = [
   ['学号','姓名','成绩'],
   ['10001','AAAAA','99'],
   ['10002','BBBBB','92'],
   ['10003','CCCCC','95'],
   ['10004','DDDDD','89'],
   ['10005','EEEEE','96'],
  ];
  Excel::create('学生成绩',function ($excel) use ($cellData){
   $excel->sheet('score', function ($sheet) use ($cellData){
    $sheet->rows($cellData);
   });
  })->export('xls');
 }

}

Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

也有一个方法是直接从数组导入

$sheet->fromArray($anyArray);

如果你要导出csv或者xlsx文件,只需将export方法中的参数改成csv或xlsx即可。

如果还要将该Excel文件保存到服务器上,可以使用store方法:

Excel::create('学生成绩',function($excel) use ($cellData){
  $excel->sheet('score', function($sheet) use ($cellData){
   $sheet->rows($cellData);
  });
})->store('xls')->export('xls');

文件默认保存到storage/exports目录下,如果出现文件名中文乱码,将上述代码文件名做如下修改即可:

iconv('UTF-8', 'GBK', '学生成绩')

4、导入Excel文件

我们将刚才保存到服务器上的Excel文件导入进来,导入很简单,使用Excel门面上的load方法即可:

//Excel文件导入功能 By Laravel学院
public function import(){
 $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '学生成绩').'.xls';
 Excel::load($filePath, function($reader) {
  $data = $reader->all();
  dd($data);
 });
}

load方法基于项目根路径作为根目录,同样我们对中文标题进行了转码,否则会提示文件不存在。

在浏览器中访问http://laravel.app:8000/excel/import,页面显示如下:

Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

使用Laravel Excel导入文件

当然,Laravel Excel还有很多其它功能,比如将Blade视图导出为Excel或CSV,以及对导入/导出更加细粒度的控制,具体可参考其官方文档:http://www.maatwebsite.nl/laravel-excel/docs

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP新手上路(十)
Oct 09 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
PHP连接及操作PostgreSQL数据库的方法详解
Jan 30 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 PHP
laravel migrate初学常见错误的解决方法
Oct 11 #PHP
Laravel学习基础之migrate的使用教程
Oct 11 #PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 #PHP
Laravel中的Blade模板引擎示例详解
Oct 10 #PHP
PHP小白必须要知道的php基础知识(超实用)
Oct 10 #PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 #PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 #PHP
You might like
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
python搜索指定目录的方法
2015/04/29 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
python如何重载模块实例解析
2018/01/25 Python
Python 多维List创建的问题小结
2019/01/18 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
祖国在我心中演讲稿400字
2014/05/04 职场文书
病假证明模板
2015/06/19 职场文书
初中班主任教育随笔
2015/08/15 职场文书
体育委员竞选稿
2015/11/21 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
详解NodeJS模块化
2021/06/15 NodeJs