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同时支持GIF、png、JPEG
Oct 09 PHP
php字符串截取问题
Nov 28 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
php中文字符串截取方法实例总结
Sep 30 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 PHP
php use和include区别总结
Oct 13 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内嵌函数用法实例
2015/03/20 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
假释思想汇报范文
2014/10/11 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
红与黑读书笔记
2015/06/29 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
PyQt5实现多张图片显示并滚动
2021/06/11 Python
关于Vue中的options选项
2022/03/22 Vue.js
Python实现为PDF去除水印的示例代码
2022/04/03 Python
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server