PHP Excel Templator (moteur de création de modèles PHP pour Excel) ou comment nous avons écrit le code dur pour Excel avant

image

Je pense que la capture d'écran montre déjà de quoi il s'agit. Mais, pour ne pas dupliquer le texte, déjà décrit dans la documentation , je ne parlerai que des points importants.

Le fait est que la bibliothèque php pour travailler avec des documents Excel est apparue il y a longtemps, mais le moteur de modèle n'a pas encore été inventé pour cela (au moins je n'ai rien trouvé de plus sensé). Et nous avons tous besoin d'une telle bibliothèque pour Excel, dans laquelle nous avons inséré des variables de modèle dans un modèle, passé des paramètres pour elles et l'envoyer à un rendu. Tout cela se fait avec une seule commande:

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

De plus, nous avons la liste de souhaits suivante:

  • nous voulons appliquer plusieurs variables de modèle dans une cellule
  • et nous voulons également passer un tableau, et en excel pour cela, les lignes correspondantes ont été créées dans la cellule
  • mais qu'en est-il d'un tableau à deux dimensions afin que non seulement des lignes mais aussi des colonnes soient créées
  • et nous devons également appliquer des styles pour chaque cellule insérée, par exemple, pour mettre en évidence de grandes quantités en vert ou pour mettre en évidence les employés qui se sont distingués en gras

Vous direz que j'ai déjà essayé de le faire: lorsque des lignes sont créées, les colonnes à droite de cette cellule seront dupliquées. Non, cela ne se produira pas, car en réalité ce ne sont pas les lignes qui sont créées, mais les «cellules avec un décalage vers le bas» sont ajoutées. Soit dit en passant, dans la feuille de calcul PHP pour le moment, il n'y a pas une telle fonction, elle ne peut insérer que des lignes.

Des effets secondaires sont-ils possibles lors de l'utilisation d'un grand nombre de tableaux unidimensionnels et bidimensionnels? Oui, ils le sont. Surtout lorsque plusieurs tableaux bidimensionnels sont utilisés dans la même ligne et sur plusieurs lignes d'affilée. Le fait est que les cellules (situées à droite) qui ne contiennent pas de variables de modèle, elles ne se déplacent pas. En conséquence, ils peuvent être chevauchés par des cellules avec un tableau à deux dimensions. Le moyen de sortir de la situation consiste à créer des variables de modèle avec des données vides et à placer ces variables à côté des cellules pour lesquelles vous devez mettre en retrait. Un exemple d'effets secondaires est disponible dans le dossier «samples».

Cela semble compliqué, mais si des lignes étaient créées, il y aurait beaucoup plus d'effets secondaires. Autrement dit, les risques d'effets secondaires sont relativement faibles.

Les plans: créer un exemple qui montre comment gérer les effets secondaires; la possibilité d'appliquer des styles sans utiliser de setters (pour exporter moins de classes et réduire la quantité de code utilisé). Pourquoi ne l'ai-je pas fait maintenant? J'ai besoin de soutien, c'est-à-dire que j'ai besoin de savoir que quelqu'un en a besoin. Et puis il se trouve que j'ai inventé un vélo et tout ce que j'ai fait, c'est un jeu complet. Par conséquent, j'attends vos commentaires.

Lien vers le projet

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


All Articles