Excel mit PhpSpreadSheet einlesen und auf bestimmte Spalten begrenzen

EuroCent

Klappstuhl 2.0
Hallo zusammen,

aktuell Arbeite ich mit dem FW PhpSpreadSheet.
Excel zu erstellen ist damit kein Problem.

Jetzt möchte Ich aber Excel Dateien einlesen, statt nur zu erstellen. :)
Ich lasse mittels Fileupload die Excel in einen definierten Ordner laden.
Das Funktioniert auch, auch hab Ich es geschafft die Excel zu lesen. :)

Mein Problem ist aber nun folgendes:
Ich möchte anhand der Daten in der Excel, die sich von Spalten her nicht ändert außer die Zeilen, nur bestimmte Spalten ausgeben.

Beispielsweise nur erste Spalte, Spalte B, H, M und die Letzte Spalte.
Allerdings komm Ich mit der Doku nicht ganz zurecht :(

Meine aktuelle Datei sieht wie folgt aus:
PHP:
<?php
$verzeichnis = "D:\\htdocs\\dokumente\\upload_module\\";
$inputFilename = basename($_FILES['files']['name'][0]);
$fullFilename = $verzeichnis.$inputFilename;
$exp = explode('.', $_FILES['files']['name'][0]);
$newFilename = $exp[0].'_'.date('Ymd-His', time(true)).'.'.$exp[1];

if (!is_dir($verzeichnis)) {
    mkdir($verzeichnis);
}

$move_uploaded_file = move_uploaded_file($_FILES['files']['tmp_name'][0], $verzeichnis.$newFilename);

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::load($verzeichnis.$newFilename);
$readerfile = $reader->setActiveSheetIndex(0);
$colsRows = $readerfile->getHighestRowAndColumn(); //Anzahl Zeilen
$test = $reader->getActiveSheet()->rangeToArray('A1:'.$colsRows['column'].$colsRows['row']); //Test um zu erfahren ob er alle Ausgibt
?>

Wie genau muss Ich nun verfahren damit Ich die Daten korrekt in ein Array oder JSON bekomme? :)
Hat einer eine Idee oder sogar einen Ansatz/Hinweis/Lösung? :)

PS:
So lese Ich aktuell alles aus:
PHP:
<?php
$verzeichnis = "D:\\htdocs\\dokumente\\upload_module\\";
$inputFilename = basename($_FILES['files']['name'][0]);
$fullFilename = $verzeichnis.$inputFilename;
$exp = explode('.', $_FILES['files']['name'][0]);
$newFilename = $exp[0].'_'.date('Ymd-His', time(true)).'.'.$exp[1];

if (!is_dir($verzeichnis)) {
    mkdir($verzeichnis);
}

$move_uploaded_file = move_uploaded_file($_FILES['files']['tmp_name'][0], $verzeichnis.$newFilename);

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::load($verzeichnis.$newFilename);
$readerfile = $reader->setActiveSheetIndex(0);
$colsRows = $readerfile->getHighestRowAndColumn(); //Anzahl Zeilen
$test = $reader->getActiveSheet()->rangeToArray('A1:'.$colsRows['column'].$colsRows['row']);

//printf('<pre>%s</pre>', print_r($test, true));

$fields = array();

for($i = 1; $i < count($test); $i++) {
    //array_push($fields, $test[$i]);
    $fields[$i] = $test[$i];
}

echo json_encode($fields);
?>
 
Wir haben aktuell das Problem so gelöst:

PHP:
<?php
$verzeichnis = "D:\\htdocs\\dokumente\\upload_module\\";
$inputFilename = basename($_FILES['files']['name'][0]);
$fullFilename = $verzeichnis.$inputFilename;
$exp = explode('.', $_FILES['files']['name'][0]);
$newFilename = $exp[0].'_'.date('Ymd-His', time(true)).'.'.$exp[1];

if (!is_dir($verzeichnis)) {
    mkdir($verzeichnis);
}

$move_uploaded_file = move_uploaded_file($_FILES['files']['tmp_name'][0], $verzeichnis.$newFilename);

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::load($verzeichnis.$newFilename);
$readerfile = $reader->setActiveSheetIndex(0);
$colsRows = $readerfile->getHighestRowAndColumn(); //Anzahl Zeilen
$test = $reader->getActiveSheet()->rangeToArray('A1:'.$colsRows['column'].$colsRows['row']);

$fields = array();

for($i = 1; $i < count($test); $i++) {
    echo $test[$i][0];
}
?>

ist zwar aktuell nicht die feine Art.
Aber wir lesen damit das Array aus und tragen nur die Teile in die DB die wir benötigen. :)

@all
Ist es denn aber aktuell möglich in der For-Schleife einen neuen Prozess zu machen, um die Daten mit der last-insertID der Datenbank in die Excel einzuspeichern?

Also quasi zur Laufzeit die Excel zu Manipulieren, oder doch dann lieber eine neue Datei erzeugen? :)
 

Neue Beiträge

Zurück