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 和 MySQL 基础教程(三)
Oct 09 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
Nov 07 PHP
PHP微框架Dispatch简介
Jun 12 PHP
yii实现级联下拉菜单的方法
Jul 31 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
详解PHP实现执行定时任务
Dec 21 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
php工具型代码之印章抠图
Jul 18 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 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防攻击代码升级版
2010/12/29 PHP
PHP基础知识回顾
2012/08/16 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
PHP多进程编程实例
2014/10/15 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
详解Nodejs内存治理
2018/05/13 NodeJs
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Django Highcharts制作图表
2016/08/27 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python如何对齐字符串
2020/07/30 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
父母教会我观后感
2015/06/17 职场文书
开学典礼校长致辞
2015/07/29 职场文书
入党后的感想
2015/08/10 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python