Laravel-excel resolvendo problema de fórmula
Resumo: Como solucionar o problema de exportação do excel com fórmulas no Laravel usando o laravel-excel.
Olá programadores. Provável que já tenham buscados por inúmeras soluções e problemas ao colocar fórmulas no código laravel-excel.
Quando falamos laravel-excel, estamos referindo ao plugin do laravel Maatwebsite.
Esse plugin é excelente, pois, permite que geremos uma diversidade de arquivos a partir dos nossos dados.
E de acordo com a interface implementada, podemos gerar a partir de um array, objeto, mapear os campos ou até mesmo gerar um arquivo por uma view.
O Problema das fórmulas laravel excel
O problema acontece quando queremos gerar um arquivo que será lido no excel e colocamos fórmulas em suas colunas.
Para resolver isso, gerei uma view com a tabela já estruturada como eu preciso. Coloquei os estilos necessários e as fórmulas do excel diretamente na view, veja o exemplo abaixo:
<table>
<tr>
<td style="text-align:center;border: 1px solid #c9bdbd;background:#A9D18E;font-weight: bold;">
1
</td>
<td style="text-align:center;border: 1px solid #c9bdbd;background:#9dff00;font-weight: bold;">
=K{{ $countLines }}*M{{ $countLines }}
</td>
<td style="text-align:center;border: 1px solid #c9bdbd;background:#9dff00;font-weight: bold;">
=L{{ $countLines }} *M{{ $countLines }}
</td>
<td style="text-align:center;border: 1px solid #c9bdbd;background:#A9D18E;font-weight: bold;">
0%
</td>
<td style="text-align:center;border: 1px solid #c9bdbd;background:#9dff00;font-weight: bold;">
=L{{ $countLines }}-(L{{ $countLines }}*P{{ $countLines }})
</td>
<td style="text-align:center;border: 1px solid #c9bdbd;background:#9dff00;font-weight: bold;">
=M{{ $countLines }}*Q{{ $countLines }}
</td>
</tr>
</table>
Fazendo as fórmulas funcionarem
Agora só precisamos gerar o arquivo em excel, porém o macete é você gerar o arquivo no laravel como xls e colocar o 2° parâmetro com o XLS, veja o exemplo:
public function export(Proposal $proposal)
{
$name = Str::slug($proposal->name).'-'.date('d-m-Y',strtotime($proposal->updated_at));
return Excel::download(new InvestimentExport($proposal),$name.'.xls',\Maatwebsite\Excel\Excel::XLS);
}
Por que conseguimos exportar um XLS com fórmulas?
A única interface do plugin que gera um problema no laravel com as fórmulas do excel é a XLSX, as demais não apresentam problemas com as fórmulas.
Portanto, ignore esse formato caso precise usar alguma fórmula na sua exportação.
Gostou do artigo? Deixe sua dúvida ou comentário