zoukankan      html  css  js  c++  java
  • laravel-admin 自定义导出表单

    官方导出文档

    laravel-admin自带的导出excel会导出与此模型关联的其他数据。所以参考官方文档调整代码

    文章表:id,title,user_id

    用户表:id,username

    //文章模型关联用户
        public function user(){
            return $this->belongsTo(User::class, 'user_id', 'id');
        }
    
     
    //ExcelExporter.php
    <?php
    namespace AppAdminExtensions;
    
    use EncoreAdminGrid;
    use EncoreAdminGridExportersAbstractExporter;
    use MaatwebsiteExcelFacadesExcel;
    
    class ExcelExpoter extends AbstractExporter
    {
        protected $head = [];
        protected $body = [];
        public function setAttr($head, $body){
            $this->head = $head;
            $this->body = $body;
        }
    
        public function export()
        {
            Excel::create('Filename', function($excel) {
                $excel->sheet('Sheetname', function($sheet) {
                    // 这段逻辑是从表格数据中取出需要导出的字段
                    $head = $this->head;
                    $body = $this->body;
                    $bodyRows = collect($this->getData())->map(function ($item)use($body) {
                        foreach ($body as $keyName){
                            $arr[] = array_get($item, $keyName);
                        }
                        return $arr;
                    });
                    $rows = collect([$head])->merge($bodyRows);
                    $sheet->rows($rows);
                });
            })->export('xls');
        }
    }

    使用方法:

                $excel = new ExcelExpoter();
                $excel->setAttr(['id', '标题', '作者'], ['id', 'title', 'user.username']);
                $grid->exporter($excel);
  • 相关阅读:
    line
    同步fifo的verilogHDL设计实例
    在DE1-SOC上运行Linux
    DE1-SOC连接设定
    Tcl语言笔记之二
    Tcl语言笔记之一
    关于复位赋初值的问题
    Altera FPGA中的pin进一步说明
    Altera FPGA中的pin简介
    笔记之Cyclone IV第一卷第四章Cyclone IV器件中的嵌入式乘法器
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9804301.html
Copyright © 2011-2022 走看看