问题描述
我在 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 中需要的任何内容!