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继承的一个应用
Sep 06 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
深入PHP数据缓存的使用说明
May 10 PHP
php使用function_exists判断函数可用的方法
Nov 19 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
php 获取文件行数的方法总结
Oct 11 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
PHP实现微信对账单处理
Oct 01 PHP
php判断IP地址是否在多个IP段内
Aug 18 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
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
分享一则javascript 调试技巧
2015/01/02 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
vue发送ajax请求详解
2018/10/09 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
会计实习自我鉴定
2013/12/04 职场文书
信访工作者先进事迹
2014/01/17 职场文书
导游个人求职信范文
2014/03/23 职场文书
2014年会策划方案
2014/05/11 职场文书
政府个人对照检查材料
2014/08/28 职场文书
退休欢送会致辞
2015/07/31 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
springboot如何初始化执行sql语句
2021/06/22 Java/Android