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 相关文章推荐
人大复印资料处理程序_查询篇
Oct 09 PHP
How do I change MySQL timezone?
Mar 26 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
ThinkPHP查询中的魔术方法简述
Jun 25 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
AJAX的使用方法详解
Apr 29 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
php面向对象程序设计入门教程
Jun 22 PHP
PHP接口类(interface)的定义、特点和应用示例
May 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
基于php-fpm 参数的深入理解
2013/06/03 PHP
orm获取关联表里的属性值
2016/04/17 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
webpack4.x打包过程详解
2018/07/18 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python 动态加载的实现方法
2017/12/22 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
tensorflow如何批量读取图片
2019/08/29 Python
Python txt文件如何转换成字典
2020/11/03 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
服务生自我鉴定
2014/01/22 职场文书
秋游活动策划方案
2014/02/16 职场文书
三八妇女节主持词
2015/07/04 职场文书