maatwebsite/excel2.1版本与3.1版本写法差别有点大,不能同时使用,下面是旧方法升级新方法的调整

单Sheet导入


旧的写法使用新的扩展包导入会报错Call to undefined method Maatwebsite\Excel\Facades\Excel::load(),解决方法

旧版本:

 $file = $request->file('exfile');Excel::load($file, function($reader) use ($data){$reader = $reader->getSheet(0); //获取excel的第1张表$results = $reader->toArray();  //获取表中的数据......});

新版本:

 $file = $request->file('exfile');$import = new Import();$path = storage_path('app').'/'.$file->store('temp');Excel::import($import, $path);$results = $import->data->toArray();......

Import.php代码如下,根据实际命名空间调整:

<?phpnamespace App;use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;/*** Class Import* @package App*/
class Import implements ToCollection
{public $data;public function __construct(){}/*** @param Collection $rows*/public function collection(Collection $rows){$this->data = $rows;}}

注意:上面的写法只能读取到最后的Sheet,如果有空的Sheet请删除,只保留一个工作Sheet,不然会影响读取结果。

多Sheet导入


创建一个继承多sheet类MultipleImport.php,如果已存在则不需要创建,同样用到上面的Import.phpMultipleImport.php代码内容如下

<?phpnamespace App;use Maatwebsite\Excel\Concerns\WithMultipleSheets;class MultipleImport implements WithMultipleSheets
{public $sheet;public $sheetCount;/*** UserImport constructor.* @param int $sheetCount sheet数量*/public function __construct($sheetCount){$this->sheetCount = $sheetCount;}public function sheets(): array{for ($i = 0; $i < $this->sheetCount; $i++) {$this->sheet[$i] = new Import();}return $this->sheet;}
}

在控制器中使用:

$file = $request->file('exfile');
$import = new MultipleImport(3);
Excel::import($import, $file->getRealPath());
$results = $import->sheet[0]->data->toArray();
$results2 = $import->sheet[1]->data->toArray();
$results3 = $import->sheet[2]->data->toArray();
dd($results,$results2,$results3);

导出excel


创建文件Export.php

<?php
namespace App;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Border;
class Export implements FromCollection,WithHeadings, WithEvents
{protected $data;protected $headings;protected $columnWidth = [];//设置列宽       key:列  value:宽protected $rowHeight = [];  //设置行高       key:行  value:高protected $mergeCells = []; //合并单元格    value:A1:K8protected $font = [];       //设置字体       key:A1:K8  value:Arialprotected $fontSize = [];       //设置字体大小       key:A1:K8  value:11protected $bold = [];       //设置粗体       key:A1:K8  value:trueprotected $background = []; //设置背景颜色    key:A1:K8  value:#F0F0F0Fprotected $vertical = [];   //设置定位       key:A1:K8  value:centerprotected $sheetName; //sheet titleprotected $borders = []; //设置边框颜色  key:A1:K8  value:#000000//设置页面属性时如果无效   更改excel格式尝试即可//构造函数传值public function __construct($data, $headings,$sheetName){$this->data = $data;$this->headings = $headings;$this->sheetName = $sheetName;$this->createData();}public function headings(): array{return $this->headings;}//数组转集合public function collection(){return new Collection($this->data);}//业务代码public function createData(){$this->data = collect($this->data)->toArray();}/*** @return array* [*    'B' => 40,*    'C' => 60* ]*/public function setColumnWidth (array $columnwidth){$this->columnWidth = array_change_key_case($columnwidth, CASE_UPPER);}/*** @return array* [*    1 => 40,*    2 => 60* ]*/public function setRowHeight (array $rowHeight){$this->rowHeight = $rowHeight;}/*** @return array* [*    A1:K7 => '宋体'* ]*/public function setFont (array $font){$this->font = array_change_key_case($font, CASE_UPPER);}/*** @return array* @2020/3/22 10:33* [*    A1:K7 => true* ]*/public function setBold (array $bold){$this->bold = array_change_key_case($bold, CASE_UPPER);}/*** @return array* @2020/3/22 10:33* [*    A1:K7 => F0FF0F* ]*/public function setBackground (array $background){$this->background = array_change_key_case($background, CASE_UPPER);}/*** @return array* [*    A1:K7* ]*/public function setMergeCells (array $mergeCells){$this->mergeCells = array_change_key_case($mergeCells, CASE_UPPER);}/*** @return array* [*    A1:K7 => 14* ]*/public function setFontSize (array $fontSize){$this->fontSize = array_change_key_case($fontSize, CASE_UPPER);}/*** @return array* [*    A1:K7 => #000000* ]*/public function setBorders (array $borders){$this->borders = array_change_key_case($borders, CASE_UPPER);}
}

在控制器中调用导出下载:

use App\Export;
use Maatwebsite\Excel\Facades\Excel as LaravelExcel;$data = [];//导出数据
$head = [];//第一行的列标题
$filename = 'excel';//导出文件名,中文好像有乱码
$excel = new Export($data, $head , 'Sheet1');
return LaravelExcel::download($excel, $filename . date('Y-m-d') . '.xls');

注意download方法只能在控制器中使用

laravel框架excel扩展包maatwebsite-excel升级3.1版本兼容处理相关推荐

  1. 【php-laravel框架】第二节:laravel常用的扩展包汇总及安装教程

    教程说明:laravel的常用扩展包汇总及安装方式. 使用版本:laravel5.5 lts版本 集成环境:phpstudy[windows推荐].宝塔windows面板[linux推荐] IDEA编 ...

  2. Voyager 1.2.3 发布,Laravel 后台管理扩展包

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Voyager 1.2.3 发布了,Voyager 是一个强大.快捷的 Laravel 后台管理扩展包,提供了 CRUD 操作.媒体管理.菜 ...

  3. mysql56401_一款你不容错过的Laravel后台管理扩展包 —— Voyager

    一款你不容错过的Laravel后台管理扩展包 -- Voyager 由 学院君 创建于4年前, 最后更新于 4个月前 版本号 #3 43101 views 16 likes 0 collects 1. ...

  4. Laravel扩展包下载excel

    composer require maatwebsite/excel 默认安装最新得版本,下面我使用得是2.1版本的 在config/app.php中注册服务提供者到providers数组: Maat ...

  5. Laravel框架使用maatwebsite/excel导出自动换行

    Laravel框架使用maatwebsite/excel导出自动换行 maatwebsite/excel 版本:2.1 $sheet->getStyle("A6:F6")-& ...

  6. 下载量最高 100 个 Laravel 扩展包推荐

    本文经授权转自 PHPHub 社区,后续更新将以 PHPHub 帖子内容 和 GitHub 内容 为准. 说明 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的, ...

  7. 下载量最高的 100 个 Laravel 扩展包推荐

    Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态. 本文对 Packagist 上打了 Laravel 标签 的扩展包进行整理,截止到现在 2 ...

  8. 【转】下载量最高的 100 个 Laravel 扩展包推荐

    说明 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态. 本文对 Packagist 上打了 Laravel 标签 的扩展包进行整理,截止到现 ...

  9. laravel-excel maatwebsite excel 导入的中文文档

    项目里需要导入了,正好 3.1 版本,也支持导入了,补充下 excel 导入的翻译文档.(工作比较忙,大概过了一遍,可能有不少错误的地方)1.5分钟快速入门在 app/Import 创建一个导入类ph ...

最新文章

  1. as3.0中如何阻止事件冒泡?
  2. SMB(Server Message Block) Protocal Research
  3. 【SeeMusic】视频编辑 ( 视频 X 坐标 | 视频 Y 坐标 | 视频旋转 | 视频扭曲 )
  4. 一个用JAVA实现的线段树类--泛型 重构.
  5. hdu 5112 A Curious Matt
  6. 机器学习算法总结之Boosting:Boosting Tree、GBDT
  7. 微信小程序+java后台
  8. 教务系统mysql注入的原理_SQL注入原理及具体步骤
  9. WPS实现公式居中同时编号对齐
  10. 身份证号码 如何把格式设置成18个格子
  11. java抽奖活动_java抽奖思路
  12. mce:style或者mcs:script是什么意思
  13. Windows 安装 Docker
  14. 【C语言】机试100题及代码答案(上)
  15. 细思极恐---十年生死两茫茫,通信人,意欲亡。
  16. HTTP POST 请求工具类
  17. 关于神经网络每次预测结果不一样的问题
  18. BZOJ 2709 Violet 1 迷宫花园
  19. 建立数据驱动的人力资源管理:以红海云eHR系统为例
  20. SEED-XDS560v2 驱动

热门文章

  1. IPP库的安装以及源码分析方法
  2. Linux刻录光盘win10认不到,Windows10系统读不取DVD光驱和刻录光盘
  3. tp5原生SQL:读操作(query方法)
  4. 「跑象科技」获得天使+融资,打造新一代实时数据基础平台
  5. 初识C语言(三)--最终章,万字解析,趣味讲解完C语言的最后知识点
  6. LocalDateTime计算时间差
  7. 异常解决:cococaption包出现找不到edu.stanford.nlp.semgraph.semgrex.SemgrexPattern错误
  8. cjk-ext-e 字体
  9. 微信小程序开发者工具error:用户绑定的手机需要进行验证,请在客户端完成短信验证
  10. 快速调用编辑器来写一条长,复杂或难的命令--用Enki学Linux系列(5)