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截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
php下统计用户在线时间的一种尝试
Aug 26 PHP
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHP异常类及异常处理操作实例详解
Dec 19 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python使用chardet判断字符编码
2015/05/09 Python
python实现浪漫的烟花秀
2019/01/30 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
杠杆的科学教学反思
2014/01/10 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
2014最新实习证明模板
2014/10/02 职场文书
践行三严三实心得体会
2014/10/13 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
初一数学教学反思
2016/02/17 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python