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在字符串中查找另一个字符串
Nov 19 PHP
PHP文件上传原理简单分析
May 29 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 PHP
php中通过DirectoryIterator删除整个目录的方法
Mar 13 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
帝国cms目录结构分享
Jul 06 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP CURL使用详解
Mar 21 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模板引擎SMARTY
2006/10/09 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
javascript web页面刷新的方法收集
2009/07/02 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue组件的写法汇总
2018/04/12 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
js实现简易计算器功能
2019/10/18 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Python如何省略括号方法详解
2020/03/21 Python
序列化Python对象的方法
2020/08/01 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
css3中transition属性详解
2014/09/02 HTML / CSS
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
网络工程师职业规划
2014/02/10 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
本溪水洞导游词
2015/02/11 职场文书
英语导游词
2015/02/13 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书