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

作者: Aufree | 来源:发表于2016-03-26 20:44 被阅读2481次

    本文经授权转自 PHPHub 社区

    同时也关于各位关注我的 GitHub

    说明

    maatwebsite/excel 是一款强大的 Excel 文件处理扩展包, 能够快速完成 Excel 文件的的导出, 解析等功能.

    本项目由 The EST Group 团队成员 @monkey 整理发布, 首发地为 PHPHub 社区.

    文章的 DEMO 项目

    截图

    运行

    Demo 代码请见:

    https://github.com/zhengjinghua/est-excel-demo

    请参照此文档运行 Demo:

    https://phphub.org/topics/1902

    文章概览

    1. 安装;
    2. 基础用法;
    3. 更多功能.

    接下来是详细解说.

    安装

    1). 使用 Composer 安装该扩展包:

    composer require maatwebsite/excel
    

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

    'providers' => [
        ...
        Maatwebsite\Excel\ExcelServiceProvider::class,
    ],
    

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

    'aliases' => [
        ...
        'Excel' => Maatwebsite\Excel\Facades\Excel::class,
    ]
    

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

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

    默认配置基本能通用大部分的项目开发需求, 因此本文不对此配置文件做过多叙述, 想深入研究的童鞋可以阅读官方文档.

    到此, 此拓展包即安装成功 :beers🍻beers:

    基础用法

    解析 Excel 文件

    # $excel_file_path = 你的 Excel 文件存放地址
    $excel_data = Excel::load($excel_file_path, function($reader) {
        $excel_data = Excel::load($excel_file_path)->get()->toArray();
    
        // 直接打印内容即可看到效果
        echo 'job.xlsx 表格内容为:';
        dd($excel_data);
    });
    

    将数据导成 Excel 文件

    // 导出 Excel 并能直接在浏览器下载
    # $export_file_name = 要生成的文件名
    Excel::create($export_file_name, function ($excel) {
        $excel->sheet('Sheetname', function ($sheet) {
            $sheet->appendRow(['data 1', 'data 2']);
            $sheet->appendRow(['data 3', 'data 4']);
            $sheet->appendRow(['data 5', 'data 6']);
        });
    })->download('xls');
    
    // 导出 Excel 并存储到指定目录
    Excel::create($export_file_name, function ($excel) {
        $excel->sheet('Sheetname', function ($sheet) {
            $sheet->appendRow(['data 1', 'data 2']);
            $sheet->appendRow(['data 3', 'data 4']);
            $sheet->appendRow(['data 5', 'data 6']);
        });
    })->store('xls', $object_path);
    

    导出的 Excel 内容见下图:

    更多功能

    除了上述的解析/导出功能外, 此扩展包还支持:

    1. 解析指定表格里的指定列;
    2. 格式化日期;
    3. 添加计算公式;
    4. 缓存表格;
    5. 批量解析指定目录里的所有 Excel 文件;
    6. 可以做格式转换, 如将 csv 转换成 xls, 反之亦可;
    7. 可以将 Excel 结合 blade 模板引擎进行渲染.

    这些更多的用例请移步 官方文档 参考.


    欢迎关注 PHPHub 的微博 @PHPHub 和微信账号~

    微信二维码:


    相关文章

      网友评论

        本文标题:如何在 Laravel 项目中处理 Excel 文件

        本文链接:https://www.haomeiwen.com/subject/spidlttx.html