【问题标题】:How can I display my imported Excel data?如何显示我导入的 Excel 数据?
【发布时间】:2020-04-28 17:16:36
【问题描述】:

目前正在开发 Excel 导入功能。我想导入 Excel 工作表并使用 foreach 循环在另一个页面上显示其信息。然而,由于某种原因,这似乎相当困难。当我死并转储收集数据(使用它是因为导入会出错)时,它会正确显示所有内容。电子表格中的数据是它应该在的地方。所以我觉得这很好。但是由于某些奇怪的原因,我无法将其插入我的数据库中。我有一个标题行,所以我使用 WithHeaderRow 功能。

数据导入类:

<?php

namespace App\Imports;

use App\Data;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

HeadingRowFormatter::default('none');


class DataImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */

    public function model(array $row)
    {
        return new Data([
            'cliëntnummer'      =>  $row['clientnummer'],
            'zoeknaam'          =>  $row['zoeknaam'],
            'naam'              =>  $row['naam'],
            'omschrijving'      =>  $row['omschrijving'],
            'plaats'            =>  $row['plaats'],
            'week'              =>  $row['week'],
            'vennoot'           =>  $row['vennoot'],
            'relatiebeheerder'  =>  $row['relatiebeheerder'],
            'samensteller'      =>  $row['samensteller'],
            'ADVer'             =>  $row['adver'],
            'cliëntgroepcode'   =>  $row['clientgroepcode'],
            'accountant'        =>  $row['accountant'],
            'samenstellen'      =>  $row['samenstellen'],
            'ADV jaarwerk'      =>  $row['ADVJaarwerk'],
            'periodieke ADV'    =>  $row['periodiekeADV'],
            'fiscaliteiten'     =>  $row['fiscaliteiten'],
        ]);
    }
}

数据控制器.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Imports\DataImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;

class DataController extends Controller
{
    public function index(){
        return view('importeren');
    }

    public function import(Request $request){

        $datas = Excel::toCollection(new DataImport(), $request->file('import_file'));
        dd($datas);
        return redirect()->route('/home');
    }
}

数据模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Data extends Model
{
    protected $fillable = [
        'id', 'cliëntnummer', 'zoeknaam', 'naam', 'omschrijving', 'plaats', 'week', 'vennoot', 'relatiebeheerder', 'samensteller', 'ADVer', 'cliëntgroepcode', 'accountant', 'samenstellen', 'ADV jaarwerk', 'periodieke ADV', 'fiscaliteiten',
    ];
}

电子表格数据:

数据库表布局:

数据转储结果:

如果我遗漏了什么,请随时告诉我。我希望这已经足够了。

【问题讨论】:

  • 在您的模型中,您是否将$fillable 设置为包含您希望能够更新的所有 列?或者,您可以在 $protected 属性中设置一个您不希望可编辑的列。
  • 我为您发布了模型代码,也许我在某个地方打错字了?

标签: laravel maatwebsite-excel


【解决方案1】:

原来我忘了在文件中引用我的数据模型,在完成如下所示的控制器代码后,它现在(几乎)可以无缝运行。

<?php

namespace App\Imports;

use App\Data;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

HeadingRowFormatter::default('none');


class DataImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */

    public function model(array $row)
    {
        return new Data([
            'cliëntnummer'      =>  $row['Cliëntnummer'],
            'zoeknaam'          =>  $row['Zoeknaam'],
            'naam'              =>  $row['Naam'],
            'omschrijving'      =>  $row['Omschrijving'],
            'plaats'            =>  $row['Plaats'],
            'week'              =>  $row['Week'],
            'vennoot'           =>  $row['Vennoot'],
            'relatiebeheerder'  =>  $row['Relatiebeheerder'],
            'samensteller'      =>  $row['Samensteller'],
            'ADVer'             =>  $row['ADVer'],
            'cliëntgroepcode'   =>  $row['Cliëntgroepcode'],
            'accountant'        =>  $row['Accountant'],
            'samenstellen'      =>  $row['Samenstellen'],
            'ADVJaarwerk'       =>  $row['ADVJaarwerk'],
            'PeriodiekeADV'     =>  $row['PeriodiekeADV'],
            'fiscaliteiten'     =>  $row['Fiscaliteiten'],
        ]);
    }
}

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多