Pedro Oliveira Soares 23 de fevereiro de 2022 Laravel

Laravel-excel resolvendo problema de fórmula

  1. Encontre seu código
  2. Laravel
  3. 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

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *