I tried to export my data in multi sheet Excel. But I face the error like
SymfonyComponentErrorHandlerErrorFatalError Class AppExportsReportExport contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (MaatwebsiteExcelConcernsFromQuery::query)
MaatwebsiteExcelSheet::formatColumn(): Argument #2 ($format) must be of type string, array given, called in C:xampphtdocshealthcarevendormaatwebsiteexcelsrcSheet.php on line 395
My controller coding is
public function exportproviders($id)
{
$providerid = $id;
return Excel::download(new ReportExport($providerid), 'users.xlsx');
}
ReportExport
class ReportExport implements WithMultipleSheets
{
use Exportable;
public function __construct(int $providerid)
{
$this->providerid = $providerid;
}
public function sheets(): array
{
$sheets = [
new ReportGeneralExport($this->providerid),
new ReportPracticeExport($this->providerid),
new ReportEducationExport($this->providerid),
new ReportWorkingExport($this->providerid),
new ReportCertificateExport($this->providerid),
new ReportReferenceExport($this->providerid),
new ReportQuestionsExport($this->providerid),
new ReportDocumentsExport($this->providerid),
];
return $sheets;
}
}
ReportGeneralExport
use AppModelsProviderinfo;
class ReportGeneralExport implements FromQuery, WithHeadings, WithTitle, ShouldAutoSize, WithColumnFormatting, WithMapping
{
use Exportable;
public function __construct(int $providerid)
{
$this->providerid = $providerid;
}
public function map($row): array
{
return [
$row['providername'],
$row['middlename'],
$row['lastname'],
$row['email'],
$row['official_email'],
$row['home_address'],
$row['home_city'],
$row['home_state'],
$row['home_country'],
$row['home_zipcode'],
$row['mail_address'],
];
}
public function query()
{
return Providerinfo::where('id',$this->providerid)->get();
}
public function headings(): array
{
return [
'First Name',
'Middle Name',
'Last Name',
'Email Id',
'Other Email Id',
'Home Address',
'Home City',
'Home State',
'Home Country',
'Home Zipcode',
'Mail Address',
];
}
}
Using Providerid to get the data from the providerinfo
table.
Advertisement
Answer
Your ReportGeneralExport
class contains a lot of implements there.
I see WithTitle but no implementation of:
public function title(): string;
Either implement it or remove WithTitle
from your implements.
I also see WithColumnFormatting but no implementation of:
public function columnFormats(): array;
Either implement it or remove WithColumnFormatting
from your implements.
Also remove the ->get()
from your query:
public function query()
{
return Providerinfo::where('id',$this->providerid)->get();
}
As per the documentation it says:
Be sure to not
->get()
the results!