• 如何在 Laravel 项目中处理 Excel 文件


    1.Laravel Excel

    Laravel Excel 是一款基于PHPExcel开发的Laravel框架专用的Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便。
    它的Github地址是:https://github.com/Maatwebsite/Laravel-Excel
    当然了,你也可以使用PHPExcel,但是请注意,PHPExcel官方团队已经停止维护了,现在官方团队开发维护的是它的升级版PHPExcel扩展包,叫做:PhpSpreadsheet
    我们今天主要介绍(因为我前天项目中用到了导出,最后选择了Laravel Exxcel☺):Laravel Excel

    安装

    1). 使用 Composer 安装该扩展包  php7.1以上用3.1.0版本:

     

     

    1.  
      composer require "maatwebsite/excel:~3.1.0"

    2). 安装完成后,修改 config/app.php 在 providers 数组内追加如下内容

     

     

    [html] view plain copy
    1. 'providers' => [  
    2.     ...  
    3.     MaatwebsiteExcelExcelServiceProvider::class,  
    4. ],  

    3). 同时在 aliases 数组内追加如下内容:

     

     

    [html] view plain copy
    1. 'aliases' => [  
    2.     ...  
    3.     'Excel' => MaatwebsiteExcelFacadesExcel::class,  
    4. ]  

    4). 接下来运行以下命令生成此扩展包的配置文件 config/excel.php:

     

     

    [html] view plain copy

    php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider"

    5.创建导出类

    php artisan make:export ExcelExport

    <?php
    
    namespace AppExports;
    
    use MaatwebsiteExcelConcernsFromCollection;
    use MaatwebsiteExcelConcernsExportable;
    use MaatwebsiteExcelConcernsWithHeadings;
    class ExcelExport implements FromCollection, WithHeadings
    {
        use Exportable;
    
        private $data;
        private $headings;
    
        //数据注入
        public function __construct($data, $headings)
        {
            $this->data = $data;
            $this->headings = $headings;
        }
    
        //实现FromCollection接口
        public function collection()
        {
            return collect($this->data);
        }
    
        //实现WithHeadings接口
        public function headings(): array
        {
            return $this->headings;
        }
    }

    6.控制器里

    public function export(){
            $data = [
                [
                    'name' => 'cheng',
                    'email' => 'cheng222'
                ],
                [
                    'name' => 'cheng',
                    'email' => 'cheng111'
                ],
            ];
    
            $headings = [
                'name',
                'email'
            ];
            return Excel::download(new ExcelExport($data, $headings), 'users.csv');
    
        }

    导入文件

    1.创建导入类

     php artisan make:import ExcelImport

    这里向和我一样不明白的小白说下,关于导入导出excel 文档里主要设计到三种 : 模型 model  , 集合 collection , 数组 Array

    此外还有 implements ToArray 和 implements ToCollection 两个方法,

    <?php
     
    namespace AppImports;
     
    use AppUser;
    use IlluminateSupportFacadesHash;
    use MaatwebsiteExcelConcernsToModel;
     
    class UsersImport implements ToModel
    {
        /**
         * @param array $row
         *
         * @return User|null
         */
        public function model(array $row)
        {
            return new User([
               'name'     => $row[0],
               'email'    => $row[1], 
               'password' => Hash::make($row[2]),
            ]);
        }
    }
    <?php
     
     
    namespace AppImports;
     
    use IlluminateSupportCollection;
    use MaatwebsiteExcelConcernsToArray;
     
     
    class UsersImport implements ToArray 
    {
        public function Array(Array $tables)
        {
            return $tables;
        }
     
    }

    控制器的两种用法

    $array = Excel::toArray(new UsersImport, 'users.xlsx');
    
    $collection = Excel::toCollection(new UsersImport, 'users.xlsx');
  • 相关阅读:
    myeclipse10集成Tomcat6时出现错误
    myeclipse10.0如何集成Git
    java中Integer在JDK1.6和JDK1.7中的区别
    Git简介和安装
    Git配置的用户名密码在本地的存贮位置
    关于ActiveMQ接收端停止接收的方法
    eclipse集成SVN插件-----复制添加插件
    【Python3之常用模块】
    【Python中if __name__ == '__main__': 的解析】
    【Python3之面向对象的程序设计】
  • 原文地址:https://www.cnblogs.com/vania/p/11704436.html
Copyright © 2020-2023  润新知