Buongiorno,
ho questo codice php che da un file excel mi deve scrivere il relativo db:
il mio problema é che ho definiti i campi del mio db con f1, f2,f3,... fx, vorrei che il php, nella lettura del file excel non tenesse conto delle intestazioni delle colonne dello stesso excel. Cioè scrivere tutte le righe del file excel nel db usando le intestazioni del db (f1, f2, f3,....fx).
Grazie
ho questo codice php che da un file excel mi deve scrivere il relativo db:
PHP:
require 'lib/Spout/Autoloader/autoload.php';
use Box\Spout\Reader\ReaderFactory;
use Box\Spout\Common\Type;
$conn = db2_connect();
$filename = dirname(__dir__).'/storage/'.$fileExcel;
$reader = ReaderFactory::create(Type::XLSX); // for XLSX files
//$reader = ReaderFactory::create(Type::CSV); // for CSV files
//$reader = ReaderFactory::create(Type::ODS); // for ODS files
$reader->open($filename);
// Clear files DB
$sqla = "DELETE FROM Lib01.MioDB01F";
$exec01 = db2_exec($conn, $sqla);
$sqlb = "DELETE FROM Lib01.MioDB02F";
$exec02 = db2_exec($conn, $sqlb);
foreach ($reader->getSheetIterator() as $sheetIndex => $sheet) {
switch($sheetIndex){
case 1: $fileDB = 'MioDB01F'; break;
case 2: $fileDB = 'MioDB02F'; break;
} //echo $sheetIndex.' '.$fileDB; exit;
foreach ($sheet->getRowIterator() as $key => $row) {
if($key === 1) {
$row = array_filter($row, 'strlen');
$numCols = count($row);
$header = strtoupper(implode(', ', $row));
$values = implode(', ', array_fill(0, $numCols, '?'));
$sql1 = "INSERT INTO Lib01.$fileDB($header) VALUES($values)";
$stmt = odbc_prepare($conn, $sql1);
continue;
}
$row = array_slice($row, 0, $numCols);
$insert = odbc_execute($stmt, array_map('trim', $row));
if($insert === false) {
echo $sql1;
var_dump($row);
}
}
}
$reader->close();
il mio problema é che ho definiti i campi del mio db con f1, f2,f3,... fx, vorrei che il php, nella lettura del file excel non tenesse conto delle intestazioni delle colonne dello stesso excel. Cioè scrivere tutte le righe del file excel nel db usando le intestazioni del db (f1, f2, f3,....fx).
Grazie