Bonsoir à tous.
Pour les besoins d'une association ou je suis bénévole, j'ai converti un fichier XLS en tableau associatif.
Je me suis inspiré de plusieurs tutos trouvés ici et la. (J'ai mis le code de ma page à la fin de mon post.)
Lorsque j'utilise la commande print_r($arrayExcel); ou var_dump($arrayExcel);, ma page affiche les données comme-ceci (Affichage avec var-dump).
Cela me fait penser que j'ai codé correctement ma conversion.array(6) { [0]=> array(7) { ["INDEX"]=> string(2) "26" ["Date_début"]=> string(5) "43836" ["Date_fin"]=> string(5) "43846" ["Annulation"]=> string(0) "" ["Site"]=> string(4) "ALSH" ["NUM_ADHERENT"]=> string(5) "CZ003" ["ENFANT"]=> string(10) "HAMA Arkan" } [1]=> array(7) { ["INDEX"]=> string(2) "89" ["Date_début"]=> string(5) "43836" ["Date_fin"]=> string(5) "43840" ["Annulation"]=> string(0) "" ["Site"]=> string(3) "AAD" ["NUM_ADHERENT"]=> string(5) "FD029" ["ENFANT"]=> string(11) "DEBLER Rose" } [2]=> array(7) { ["INDEX"]=> string(3) "286" ["Date_début"]=> string(5) "43837" ["Date_fin"]=> string(5) "43840" ["Annulation"]=> string(0) "" ["Site"]=> string(4) "ALSH" ["NUM_ADHERENT"]=> string(5) "AY037" ["ENFANT"]=> string(13) "MARCO Mathieu" } [3]=> array(7) { ["INDEX"]=> string(2) "77" ["Date_début"]=> string(5) "43839" ["Date_fin"]=> string(5) "43839" ["Annulation"]=> string(0) "" ["Site"]=> string(4) "ALSH" ["NUM_ADHERENT"]=> string(5) "CX014" ["ENFANT"]=> string(10) "ZENTZ Eric" } [4]=> array(7) { ["INDEX"]=> string(2) "36" ["Date_début"]=> string(5) "43843" ["Date_fin"]=> string(5) "43847" ["Annulation"]=> string(0) "" ["Site"]=> string(3) "AAD" ["NUM_ADHERENT"]=> string(5) "BQ006" ["ENFANT"]=> string(13) "HERMAN Victor" } [5]=> array(7) { ["INDEX"]=> string(2) "68" ["Date_début"]=> string(5) "43844" ["Date_fin"]=> string(5) "43846" ["Annulation"]=> string(0) "" ["Site"]=> string(4) "ALSH" ["NUM_ADHERENT"]=> string(5) "BW045" ["ENFANT"]=> string(10) "PAUL Marie" } }
Lorsque j'essaie d'afficher les informations ligne par ligne en utilisant une boucle foreach j'ai une erreur qui s'affiche :J'ai fait plusieurs recherches pour identifier le pourquoi de ce message mais n'ai pas trouvé quelque-chose qui correspondait à mon problème. De ce que je comprend, j'ai un problème de conversion de tableau en variable et je ne comprends pas comment résoudre ce problème.Notice: Array to string conversion in C:\xampp\htdocs\test\test2.php on line 56
Pour info : J'utilise une VM pour développer ma page ou j'ai installé XAMPP à l'identique de la machine ou sera hébergé la page une fois terminée. Le site est destiné à un réseau local sans internet. J'ai une contrainte de conversion d'un fichier XLS. Je n'ai pas d'autre possibilité et ne souhaite pas faire de conversions en CSV ou un autre format.
Voici ce que contient mon fichier XLS. (Je n'ai mis qu'une seule ligne et le nom des enfants a été tronqué pour des raisons de confidentialité)
INDEX Date_début Date_fin Annulation Site NUM_ADHERENT ENFANT 26 06/01/2020 16/01/2020 0 ALSH CZ003 HAMA Arkan
Voici le code de ma page de test qui m'indique l'erreur en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 <?php require 'C:\Windows\System32\vendor\autoload.php'; $inputFileType = 'Xls'; $inputFileName = './presences_enfants.XLS'; try { /** Create a new Reader of the type defined in $inputFileType **/ $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); /** Load $inputFileName to a Spreadsheet Object **/ $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName); } catch(Exception $e) { // si l'ouverture échoue, on l'indique à l'utilisateur. echo "fichier introuvable"; // METTRE A JOUR POUR ENVOYER UN MAIL AUX ADMINISTRATEURS !!! exit(); } // Création d'un tableau qui contiendra les colonnes du fichier Excel $arrayExcel = []; // Séléction de la feuille du document à insérer $sheet = $spreadsheet->getSheet(0); // Nombre de lignes de la feuille concernée. $highestRow = $sheet->getHighestRow(); // Nombre de colonnes de la feuille concernée. $highestColumn = $sheet->getHighestColumn(); // Boucle pour parcourir les lignes de la feuille. for ($row = 1; $row <= $highestRow; $row++) { // On range la ligne dans l'ordre 'normal' --> ??? Je ne sais pas à quoi cela correspond !!! $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); // rowData est un tableau contenant les données de la ligne $rowData = $rowData[0]; // Création d'un tableau associatif nommé $arrayExcel et ajout de chaque ligne de la feuille à la suite. array_push($arrayExcel, ["INDEX"=>trim($rowData[0]), "Date_début"=>trim($rowData[1]), "Date_fin"=>trim($rowData[2]), "Annulation"=>trim($rowData[3]), "Site"=>trim($rowData[4]), "NUM_ADHERENT"=>trim($rowData[5]), "ENFANT"=>trim($rowData[6])]); } array_shift($arrayExcel); // Suppression de la première ligne qui contient les entêtes de colonnes. //var_dump($arrayExcel); // POUR TEST - permet de vérifier que mon tableau contient les valeurs de ma feuille excel foreach($arrayExcel as $element) { echo $element . '<br />'; } ?>
Partager