【问题标题】:Single excel sheet with multiple tables Laravel/Excel带有多个表格的单个 excel 表 Laravel/Excel
【发布时间】:2019-12-31 04:01:29
【问题描述】:

我目前正在使用 Maatwebsite 的 Excel 包,并且能够很好地生成一个包含我想要的列和值的表,但我希望能够生成表,而其他表位于一个 Excel 表中。有可能吗?

上面附上的屏幕截图是我现在可以生成的 excel 文件,下面的屏幕截图是我要生成的 excel 文件的示例,表格位于另一个表格下方。有没有办法在单个 Excel 导出类中执行此操作?

【问题讨论】:

  • 在导出类的collection()方法中,能不能返回一个集合的集合? docs.laravel-excel.com/3.1/exports/collection.html
  • 我想我已经返回了一个集合的集合 这是我的返回收集方法 -> "return collect([ $level_one_array, $level_two_array, $level_three_array, ]);"但是我如何在一个 Excel 表中有多个表,它们具有不同的标题和列的差异,就像我附加的第二个屏幕截图一样?因为我在文档中找不到类似的东西

标签: excel laravel


【解决方案1】:

我不相信你会找到只使用 Laravel Excel 的方法——大多数人会为每个数据集创建一个新工作表。但最终,如果您手动构建输出数组,您可以随意格式化数据。

这是您可以做到的一种方法。

控制器
将数组直接传递给导出类,而不是集合。

$arrays = [$level_one_array, $level_two_array, $level_three_array];

return Excel::download(new YourExportClass($arrays), 'YourFilename.xlsx');

导出
构建与所需布局相对应的输出数组,然后将其包装在集合中。

class YourExportClass implements FromCollection
{
    use Exportable;

    private $collection;

    public function __construct($arrays)
    {
        $output = [];

        foreach ($arrays as $array) {
            // get headers for current dataset
            $output[] = array_keys($array[0]);
            // store values for each row
            foreach ($array as $row) {
                $output[] = array_values($row);
            }
            // add an empty row before the next dataset
            $output[] = [''];
        }

        $this->collection = collect($output);
    }

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

【讨论】:

    【解决方案2】:

    如果您想以所需格式将数据导出到电子表格中,那么您可以抓取该集合并将其发送到查看和显示根据您的要求。 这是从视图导出为 excel 的文档: https://docs.laravel-excel.com/3.0/exports/from-view.html 希望这会有所帮助

    【讨论】:

    • 我知道这是 2 年后的事了,但我只是想在谷歌上搜索其他人说这行得通。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多