首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maatwebsite\Excel\Sheet的Errorr Returnn值::mapArraybleRow()必须是类型数组,字符串返回

Maatwebsite\Excel\Sheet的Errorr Returnn值::mapArraybleRow()必须是类型数组,字符串返回
EN

Stack Overflow用户
提问于 2020-01-20 13:49:39
回答 2查看 5.2K关注 0票数 0

我刚刚升级了Laravel5.4到5.5,现在我必须更改使用旧的Laravel的所有编码。

我使用的是php 7.2.25,Windows/Wamp。

我试图上传一个excel文件,获取它的数据,对它做大量的检查和计算(还没有在代码中),然后创建一个新的excel文件,并给用户Windows 'Save‘选项。

documentation.

  1. 不确定如何获取保存文件窗口,没有看到任何解释

代码语言:javascript
复制
1. If I can't get the Windows save file window, I'm not sure how to set the path to: My Documents\test for example.

  1. 在我的代码中,我得到了以下错误:

Symfony \ Component \ Debug \ FatalThrowableError (E_RECOVERABLE_ERROR)类型错误: Maatwebsite\Excel\Sheet::mapArraybleRow()的返回值必须为类型数组,字符串返回

我的导入类代码:

代码语言:javascript
复制
namespace App\Imports;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use App\Exports\TimesheetsExport;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Facades\Excel; 
use App\User;

class TimesheetsImport implements ToCollection, WithHeadingRow
{
private $user;

public function __construct($param)
{
    $this->user = $param;
}

public function collection(Collection $rows)
{
    $data = new Collection([$this->user->fullName()]);
    foreach ($rows as $row) 
    {
        $data->put($row['date'], $row['in'], $row['out']);
    }

return Excel::download(new TimesheetsExport($data), 'testtttt.xlsx');

我的出口课程:

代码语言:javascript
复制
namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;
use Illuminate\Support\Collection;

class TimesheetsExport implements FromCollection
{
    protected $rows;

    public function __construct(Collection $rows)
    {
        $this->rows = $rows;
    }
    
    public function collection()
    {
        return $this->rows;
    }
}

有人能帮忙吗?

EN

回答 2

Stack Overflow用户

发布于 2020-01-21 08:31:58

过了一天半,我终于成功了。

工作守则:

进口类别:

代码语言:javascript
复制
namespace App\Imports;

use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Facades\Excel;
use App\User;

class TimesheetsImport implements ToCollection, WithHeadingRow
{
    public $data;

    public function collection($rows)
    {
        $this->data = $rows;
    }
}

出口类别:

代码语言:javascript
复制
namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;

class TimesheetsExport implements FromCollection
{
    protected $rows;

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

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

我的控制器:

代码语言:javascript
复制
public function importTimesheets(Request $request)
    {        
        $import = new TimesheetsImport;
        $rows = Excel::toCollection($import, $request->file('file'));

        return Excel::download(new TimesheetsExport($rows), 'test.xlsx');
    }

通过这段代码,我还可以得到Windows的“保存文件”。

这不好玩,但它已经完成了,我希望它能帮助到别人。

票数 1
EN

Stack Overflow用户

发布于 2020-06-18 02:04:53

代码语言:javascript
复制
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Excel;
use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Excel as ExcelType; 

..。

代码语言:javascript
复制
$array = [[1,2,3],[3,2,1]];

return  \Excel::download(new class($array) implements FromArray{ 
            public function __construct($array)
            {
                $this->array = $array;
            }
            public function array(): array
            {
                return $this->array;
            }
        },'db.xlsx', ExcelType::XLSX);  

在没有额外框架的情况下决定了。Laravel 7*,Maatwebsite 3*

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59824682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档