PHP Excel Templator (mecanismo de modelos PHP para Excel) ou como escrevemos hardcode para Excel antes

imagem

Eu acho que já está claro na captura de tela do que se trata. Mas, para não duplicar o texto, que já está descrito na documentação , falarei apenas de pontos importantes.

O fato é que a biblioteca php para trabalhar com documentos do Excel apareceu há muito tempo, mas o mecanismo de modelo ainda não foi inventado para isso (pelo menos não achei nada mais sensato). E todos nós precisamos dessa biblioteca para o Excel, na qual inserimos variáveis ​​de modelo em um modelo, passamos parâmetros para elas e a enviamos para uma renderização. Tudo isso é feito com um comando:

use alhimik1986\PhpExcelTemplator\PhpExcelTemplator; PhpExcelTemplator::saveToFile('./template.xlsx', './exported_file.xlsx', [ '{current_date}' => date('dm-Y'), '{department}' => 'Sales department', ]); 

Além disso, temos a seguinte lista de desejos:

  • queremos aplicar várias variáveis ​​de modelo em uma célula
  • e também queremos passar uma matriz e, no Excel, as linhas correspondentes foram criadas na célula
  • mas e uma matriz bidimensional para que não apenas as linhas, mas também as colunas sejam criadas
  • e também precisamos aplicar estilos para cada célula inserida, por exemplo, para destacar grandes quantidades em verde ou para destacar os funcionários que se destacaram em negrito

Você dirá que eu já tentei fazer isso: quando as linhas são criadas, as colunas à direita desta célula serão duplicadas. Não, isso não acontecerá, porque, na realidade, não são as linhas criadas, mas as "células com uma mudança para baixo" são adicionadas. A propósito, na planilha PHP no momento não existe essa função, ela pode apenas inserir linhas.

Os efeitos colaterais são possíveis ao usar um grande número de matrizes unidimensionais e bidimensionais? Sim eles são. Especialmente quando várias matrizes bidimensionais são usadas na mesma linha e em várias linhas seguidas. O fato é que as células (localizadas à direita) que não contêm variáveis ​​de modelo, elas não se movem. Como resultado, eles podem ser sobrepostos por células com uma matriz bidimensional. A saída da situação é criar variáveis ​​de modelo com dados vazios e colocar essas variáveis ​​ao lado das células para as quais você precisa recuar. Um exemplo de efeitos colaterais está disponível na pasta "samples".

Parece complicado, mas se as linhas fossem criadas, haveria muito mais efeitos colaterais. Ou seja, as chances de efeitos colaterais são relativamente baixas.

Os planos: crie um exemplo que mostre como lidar com efeitos colaterais; a capacidade de aplicar estilos sem usar setters (para exportar menos classes e reduzir a quantidade de código usada). Por que eu não fiz isso agora? Preciso de apoio, ou seja, preciso saber que alguém precisa disso. E, de repente, descobri que eu inventei uma bicicleta e tudo que fiz foi jogo completo. Portanto, estou aguardando o seu feedback.

Link para o projeto

Source: https://habr.com/ru/post/pt425763/


All Articles