Reputation: 253
I'm trying to import excel file (.xlsx) using maatwebsite 3.0. How to fix This error
Call to undefined method Maatwebsite\Excel\Excel::load()
My controller
public function importsave(Request $request)
{
if($request->hasFile('excel'))
{
$path = $request->file('excel')->getRealPath();
$data= Excel::load($path, function($reader) {})->get();
if(!empty($data) && $data->count())
{
foreach($data->toArray() as $key=>$value)
{
if(!empty($value))
{
Employee::insert($value);
}
}
}
}
}
Upvotes: 22
Views: 105583
Reputation: 302
Don't Panic Just Do It ... :)
$data = Excel::toArray([], $request->file('file_file'))[0];
$headers = $data[0];
$final = [];
foreach ($data as $datum) {
$final[] = array_combine($headers, $datum);
}
$counter = 0;
foreach ($final as $row) {
$service = Service::where('code', $row['code'])->orderBy('status', 'desc')->first();
if (!is_null($service)) {
dump($service->code);
$service->cost = $row['cost'];
$service->price = $row['price'];
$service->discount = $row['discount'];
$service->vat = $row['vat'];
$service->sbs_code = $row['sbs_code'];
$service->sbs_description = $row['sbs_description'];
$service->is_package = $row['is_package'];
$service->save();
$counter++;
}
}
Upvotes: 0
Reputation: 181
Dont panic :) Just do like this
Excel::toArray([],$filePath);
Just pass an empty array as the first parameter
Upvotes: 11
Reputation: 40899
Version 3.0 of that package doesn't handle imports yet. Release date for this feature is unknown. See this post for more details: https://medium.com/@maatwebsite/laravel-excel-lessons-learned-7fee2812551
I suggest you switch to version 2.*.
Else you want to continue further ALL Laravel Excel 2.* methods are deprecated and will not be able to use in 3.0 .
Excel::load() is removed and replaced by Excel::import($yourImport)
Excel::create() is removed and replaced by Excel::download/Excel::store($yourExport)
Excel::create()->string('xlsx') is removed an replaced by Excel::raw($yourExport, Excel::XLSX)
3.0 provides no convenience methods for styling, you are encouraged to use PhpSpreadsheets native methods.
Upvotes: 34
Reputation: 191
^3.0
versions of maatwebsite/excel
does not support loads.
Delete the config/excel.php
file first .
Downgrade the maatwebsite/excel
version by changing your composer.json
file from
"maatwebsite/excel": "^3.1"
, to "maatwebsite/excel": "~2.1.0"
, and performing 'composer update'.
And if you get an error:
Undefined class constant 'XLSX' in 2.1 version
this is what you have to do.
Delete the config/excel.php before downgrading then perform the composer update.
Upvotes: 9
Reputation: 784
ALL Laravel Excel 2.* methods are deprecated and will not be able to use in 3.0 .
Excel::load() is removed and replaced by Excel::import($yourImport)
Excel::create() is removed and replaced by Excel::download/Excel::store($yourExport)
Excel::create()->string('xlsx') is removed an replaced by Excel::raw($yourExport, Excel::XLSX)
3.0 provides no convenience methods for styling, you are encouraged to use PhpSpreadsheets native methods.
Upvotes: 12
Reputation: 121
Hi there in version 3 the load method was remove so switch back to version two like so try using this command,
composer require "maatwebsite/excel:~2.1.0"
Upvotes: 12
Reputation: 31948
Version 3.0 of Laravel Excel doesn't handle imports.
You could also use an alternative package that works with import such as:
Both handles import.
You could also switch to version 2, but it means use an old version of a lib.
Upvotes: 3