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制作新闻系统的思路
Oct 09 PHP
PHP开发框架总结收藏
Apr 24 PHP
PHP时间戳使用实例代码
Jun 07 PHP
php print EOF实现方法
May 21 PHP
redis 队列操作的例子(php)
Apr 12 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
示例详解Laravel的注册重构
Aug 14 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
一个目录遍历函数
2006/10/09 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
php报错502badgateway解决方法
2019/10/11 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
jQuery链使用指南
2015/01/20 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
在django中使用自定义标签实现分页功能
2017/07/04 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python3图片文件批量重命名处理
2019/10/31 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
30年同学聚会邀请函
2014/01/25 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
基石观后感
2015/06/12 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
导游词之唐山景点
2019/12/18 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis