par
GuillaumeLM » 04 mars 2022, 11:03
Bonjour, après une maladie et de nombreuses tentative, je reviens vers vous car, désormais, j'arrive à sortir mon fichier excel, avec le bon nombre de lignes en erreurs, mais, avec les dernières lignes du tableau original.
Pour tenter d'être le plus clair possible, je sais que j'ai au total 14 lignes en erreur sur mon tableau original, or, il me sort, sur le fichier erreur, les 14 dernières lignes du tableau original, et non les vraies lignes qui sont en erreurs.
<?php
require_once "config.php";
require_once "vendor/autoload.php";
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxW;
$rowError = array();
if ($dir = opendir('C:\laragon\www\xlsxToCsv\Import')) {
while (false !== ($file = readdir($dir))) {
if ($file != ".." && $file != "." && $file != "ERREUR" && $file != "IMPORTER" && $file != "ARCHIVES" && $file != "Entete_type.xlsx" && $file != "Thumbs.db") {
$reader = new Xlsx();
$spreadsheet = $reader->load('C:\laragon\www\xlsxToCsv\Import\\' . $file);
$writer = $spreadsheet;
$sheet = $writer->getActiveSheet();
$sheetData = $spreadsheet->getActiveSheet()->toArray();
if (!empty($sheetData)) {
for ($i = 1; $i < count($sheetData); $i++) { //Saut de la 1ere ligne entete
$j = 1;
$numMag = $sheetData[$i][10];
$libMag = $sheetData[$i][11];
$searchMag = Find_mag($numMag);
if (empty($searchMag)) {
$j++;
$dest = "";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$message = "<html>
<head>
<title></title>
</head>
<body>
<p>Attention,</p>
<p>Le magasin " . $numMag . " " . $libMag . ", à la ligne " . ($i + 1) . " du fichier excel n'est pas présent dans la base.</p>
<p>Vous devez le créer avant de pouvoir traiter le fichier.</p>
</body>
</html>";
mail($dest, "", $message, $headers);
array_push($rowError, $i);
}
else {
$sheet->removeRow(($j+1), 1);
}
}
}
$writer = new XlsxW($writer);
$writer->save("./Erreurs/errorList.xlsx");
}
}
closedir($dir);
}
Voilà la mise à jour du code.
Encore merci d'avance!
Bonjour, après une maladie et de nombreuses tentative, je reviens vers vous car, désormais, j'arrive à sortir mon fichier excel, avec le bon nombre de lignes en erreurs, mais, avec les dernières lignes du tableau original.
Pour tenter d'être le plus clair possible, je sais que j'ai au total 14 lignes en erreur sur mon tableau original, or, il me sort, sur le fichier erreur, les 14 dernières lignes du tableau original, et non les vraies lignes qui sont en erreurs.
[PHP]<?php
require_once "config.php";
require_once "vendor/autoload.php";
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxW;
$rowError = array();
if ($dir = opendir('C:\laragon\www\xlsxToCsv\Import')) {
while (false !== ($file = readdir($dir))) {
if ($file != ".." && $file != "." && $file != "ERREUR" && $file != "IMPORTER" && $file != "ARCHIVES" && $file != "Entete_type.xlsx" && $file != "Thumbs.db") {
$reader = new Xlsx();
$spreadsheet = $reader->load('C:\laragon\www\xlsxToCsv\Import\\' . $file);
$writer = $spreadsheet;
$sheet = $writer->getActiveSheet();
$sheetData = $spreadsheet->getActiveSheet()->toArray();
if (!empty($sheetData)) {
for ($i = 1; $i < count($sheetData); $i++) { //Saut de la 1ere ligne entete
$j = 1;
$numMag = $sheetData[$i][10];
$libMag = $sheetData[$i][11];
$searchMag = Find_mag($numMag);
if (empty($searchMag)) {
$j++;
$dest = "";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$message = "<html>
<head>
<title></title>
</head>
<body>
<p>Attention,</p>
<p>Le magasin " . $numMag . " " . $libMag . ", à la ligne " . ($i + 1) . " du fichier excel n'est pas présent dans la base.</p>
<p>Vous devez le créer avant de pouvoir traiter le fichier.</p>
</body>
</html>";
mail($dest, "", $message, $headers);
array_push($rowError, $i);
}
else {
$sheet->removeRow(($j+1), 1);
}
}
}
$writer = new XlsxW($writer);
$writer->save("./Erreurs/errorList.xlsx");
}
}
closedir($dir);
}[/PHP]
Voilà la mise à jour du code.
Encore merci d'avance!