博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
laravel 导出插件
阅读量:6251 次
发布时间:2019-06-22

本文共 2789 字,大约阅读时间需要 9 分钟。

转发:

版本:laravel5

          php 5.6

安装步骤:

一、安装插件

①、首先在Laravel项目根目录下使用Composer安装依赖:

composer require "maatwebsite/excel:~2.1.0"

②、在config/app.php中注册服务提供者到providers数组:

Maatwebsite\Excel\ExcelServiceProvider::class,

 

③、在config/app.php中注册门面到aliases数组:

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

④、建议你生成Laravel Excel的配置文件,使用如下命令:

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

 

然后你会发现在config目录下有一个excel.php文件 

你可以打开看一下大概的配置项,主要就是缓存,表单,和导入,导出的一些设置。

 

二、使用

①、创建路由:

//Excel导出 Route::get('/excel/export','Member\MemberController@export')->name('/excel/export');

//Excel导入 Route::get('/excel/import','Member\MemberController@import')->name('/excel/import'); 

1-1、导出的方法:

limit(5)->get()->toArray(); $cellData[0] = array('昵称','性别','头像'); for($i=0;$i
sheet('score', function($sheet) use ($cellData){ $sheet->rows($cellData); }); })->export('xls'); die; }}

我来对上面的代码进行解释下。

a. ini_set设置内存溢出大小和超时时间是因为我的数据量比较大,不想直接去php.ini中修改,所以直接在这设置。你也可以修改excel.php配置项中的缓存大小,适当调整。
b. 首先你得需要知道cellData是一个二维数组,并且二维数组中的每一个一维数组必须是索引数组才行,这样格式上才能正确。
所以,我对我查询出的$cellData先进行了toArray()转化操作。然后我让你看下查询出的结构,因为我们数组表中的每个列都是一个字段,所以决定了一维数组是关联数组,需要去键处理。

for循环处理后就是:

 

  for循环中的另一个

php
$cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);
这个地方是比较坑的一个地,因为Excel单元格当你的导出数据中某个列的某个值第一个字符是等号“=”,他就会进行计算处理,然后就报错了。比如我到处的某个昵称是“=阳光”,我就吧等号匹配替换为空格加等号了
其实本不需要进行匹配替换的,因为在excel.php文件中有配置项,但是我配置了并不生效,后续找到更好的解决方法会及时更新,或者有哪位知道了可以指点一下。  

/*        |--------------------------------------------------------------------------        | Calculate        |--------------------------------------------------------------------------        |        | By default cells with formulas will be calculated.        |        */        'calculate'               => false,---------------------作者:谷谷谷 来源:CSDN 原文:https://blog.csdn.net/gu_wen_jie/article/details/79296470?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

  

默认情况下,计算公式的单元格将被计算。我设置为false没生效。所以匹配替换。

如果你要导出csv或者xlsx文件,只需将export方法中的参数改成csv或xlsx即可。也可以进行连贯操作直接将导出的文件直接保存到服务器上。 

使用store方法:

Excel::create('用户信息',function($excel) use ($cellData){            $excel->sheet('score', function($sheet) use ($cellData){                $sheet->rows($cellData);            });        })->store('xls')->export('xls');---------------------作者:谷谷谷 来源:CSDN 原文:https://blog.csdn.net/gu_wen_jie/article/details/79296470?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

  ok,导出完成。

 

2-1 导入:

导入我们可以直接用第一步注册的门面Excel门面上的load方法

/**     *     * Excel导入     */    public function import(){        $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '用户信息').'.xls';        Excel::load($filePath, function($reader) {            $data = $reader->all();            dd($data);        });    }

  ok,导入完成。

 

转载于:https://www.cnblogs.com/sz-xioabai/p/9765382.html

你可能感兴趣的文章
数据结构化与保存
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>
没有发布过产品的程序员不知道什么是真正的软件
查看>>
图论 - Travel
查看>>
服务器设计笔记(3)-----消息队列
查看>>
吐槽一下wp toolkit ToggleSwitch控件
查看>>
Ubuntu16.04上Docker的安装及基本用法
查看>>
步步为营 C# 技术漫谈 四、垃圾回收机制(GC)
查看>>
WPF基础之体系结构
查看>>
Linux源码-等待队列注释
查看>>
[转] .htaccess实现www 与没有www之间的重定向
查看>>
c实现统计字符中单词的个数,单词之间用空格分隔开。
查看>>
JavaScript(三) - 精简
查看>>
BZOJ2064:分裂——题解
查看>>
poj 1797 Heavy Transportation(最短路径Dijkdtra)
查看>>
[转] 拉格朗日对偶
查看>>
WPF 在事件中绑定命令
查看>>
《工作DNA》读后感
查看>>
基于WinDbg的内存泄漏分析
查看>>
《小故事》
查看>>