zoukankan      html  css  js  c++  java
  • laravel5.5 excel的安装和使用

    在项目开发中 最常用的就是把数据导出成excel的文件报表了

    然而新下的项目中啥也没有;没有excel的扩展

    会报这个错误

    然后你需要通过composer安装这个依赖

    学习源头:https://www.jianshu.com/p/4a2457efbf91

    excel官方文档:http://laravelacademy.org/post/2024.html

    1,使用Composer安装依赖


    在Laravel项目根目录下使用Composer安装依赖:

    composer require maatwebsite/excel ~2.1

    ps:一定要加上~2.1!!!因为现在已经更新到3.0版本了,如果你不加的话,会安装最新的3.0版本!等运行时候就会报错,类似下面这样的报错

    Symfony Component Debug Exception FatalThrowableError (E_ERROR)Call to undefined method MaatwebsiteExcelExcel::create(),


    2,安装后,修改设置

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

    MaatwebsiteExcelExcelServiceProvider::class,


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

    'Excel' => MaatwebsiteExcelFacadesExcel::class,


    执行Artisan命令:

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


    执行成功后会在config目录下生成文件excel.php。

    修改生成的excel.php文件

    大约是在431行,将'to_ascii' => true,改为

    'to_ascii' => false,

    3、测试Excel文件

    创建一个控制器ExcelController.php:

    php artisan make:controller ExcelController 


    然后在routes.php中定义相关路由:

    Route::get('excel/export','ExcelController@export');

    Route::get('excel/import','ExcelController@import');


    然后实现导出、导入功能:

    <?php

    namespace AppHttpControllers;

    use AppHttpRequests;

    use IlluminateHttpRequest;

    use AppHttpControllersController;

    use Excel;

    class ExcelController extends Controller

    {

        public function export()

        {

            $cellData = [

                ['id','姓名','年龄'],

                ['10001','张三','19'],

                ['10002','李四','22'],

                ['10003','王五','23'],

                ['10004','赵六','19'],

                ['10005','猴七','22'],

            ];

            $name = iconv('UTF-8', 'GBK', '成员信息');

            Excel::create($name,function($excel) use ($cellData){

                $excel->sheet('score', function($sheet) use ($cellData){

                    $sheet->rows($cellData);

                });

            })->store('xls')->export('xls');

        }

        public function import(){

            $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '成员信息').'.xls';

            Excel::load($filePath, function($reader) {

                $data = $reader->all(); dump($data);

            });

            exit;

        }

    }


    如果你要导出csv或者xlsx文件,只需将export方法中的参数改成csv或xlsx。

    store方法,将该Excel文件保存到服务器上,文件默认保存到storage/exports目录下,iconv()是为了防止文件名中文乱码。

    访问 http://youdemain/excel/export

    访问 http://youdemain/excel/import

    public function extract(Request $request)
        {
            // 请求参数
            $status = $request->status ? $request->status : 4; // status(提取状态) 4 有效-未提取 6 已提取 未提取指的是标记为有效的
            $data_id = $request->data_id ? $request->data_id : [];
            $all_extract = $request->all_extract ? $request->all_extract : 1; // 默认是普通选择提取
    
            $extract_data = $this->getExtData(4, $data_id, 2);
    //        return Response::json($extract_data);
    //        dd($extract_data);
            $cellData[0] = ['数据编号','拨打时间','通话时长','手机实号'];
            foreach($extract_data as $k=>$v){
                $cellData[$k+1] = [$v->id ? $v->id : '', $v->dial_time ? date('Y-m-d H:i:s', $v->dial_time) : '', $v->time_len ? $v->time_len : '', $v->kh_phone ? $v->kh_phone : ''];
            }
            if ($status == 4) {
                $status_msg = '未提取';
            } else if ($status == 6) {
                $status_msg = '已提取';
            }
    
            Excel::create("{$status_msg}数据",function($excel) use ($cellData){
                $excel->sheet('score', function($sheet) use ($cellData){
                    $sheet->rows($cellData);
                });
            })->export('xls');
        }
  • 相关阅读:
    php 随机红包算法
    mysql window系统备份远程数据库到本地
    程序员 面试题【前端,java,php】
    PDMan 数据库建模工具
    数据结构之更多字符串的内容
    数据结构之参考-对象与参考
    数据结构之序列
    excel的宏与VBA入门——代码调试
    DataWorks使用小结(二)——功能面板使用指南
    DataWorks使用小结(一)——概述
  • 原文地址:https://www.cnblogs.com/djwhome/p/9322112.html
Copyright © 2011-2022 走看看