没有模型的 Laravel Excel 3.1 样式

问题描述

我在 Laravel 项目中使用了 laravel-excel.com

由于数据不是来自特定模型,我不想创建一个虚拟模型类,我直接生成了 excel 文件

return (new \Illuminate\Support\Collection($data))->downloadExcel(
    'informe.xlsx',null,false
);

($data一个二维数组,包含唯一数据表的数据)

我想知道是否有任何方法可以在列上应用某种样式(宽度、字体粗细等)。
据我所知,如果我为这个 excel 创建一个模型,这是可能的(如解释 here)。
没有可能吗?

解决方法

如果没有模型,似乎无法在 Excel 表上应用样式。

但是,我发现了一个技巧,可以很容易地将我的代码移动到模型中,我把它留在这里以防它可能对某人有所帮助。

这个想法是将 $data 数组(我使用服务检索)作为参数传递给构造函数:

控制器:

return Excel::download(new MyExport($data),"$fileName.xlsx");

app/Exports/MyExport.php:

<?php

namespace App\Exports;

use \Illuminate\Support\Collection;

class ActuacionesExport implements FromCollection
{
    private $data;

    function __construct($data) {
        $this->data = $data;
    }

    public function collection()
    {
        return new Collection($this->data);
    }
}

如您所见,该模型除了返回一个 Collection 实例之外不执行任何操作,但它允许添加样式、列宽、绘图 - 您在 excel 中需要的任何内容!