2011-08-23 15 views
15

Ho trovato la libreria PHPExcel brillante per manipolare i file Excel con PHP (lettura, scrittura e così via).Lettura di un foglio XLSX per alimentare una tabella MySQL utilizzando PHPExcel

Ma da nessuna parte nella documentazione è spiegato come leggere un foglio di lavoro XLSX per alimentare una tabella MySQL ...

Siamo spiacenti per questa domanda stupida, ma ne ho bisogno per il mio lavoro e non ha trovato risposta sul web.

Un piccolo esempio potrebbe essere molto utile.

Grazie mille.

aggiornamento:

Ho preciso la mia domanda:

L'unica parte del codice che ho trovato nella documentazione che mi potrebbe aiutare è quello di leggere un file di Excel e visualizzarli in una tabella HTML:

`require_once 'phpexcel/Classes/PHPExcel.php'; 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 

$objPHPExcel = $objReader->load("edf/equipement.xlsx"); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 

echo '<table border="1">' . "\n"; 
for ($row = 1; $row <= $highestRow; ++$row) { 
    echo '<tr>' . "\n"; 

    for ($col = 0; $col <= $highestColumnIndex; ++$col) { 
    echo '<td>' . $objWorksheet->getCellByColumnAndRow($col, $row)->getValue() . '</td>' . "\n"; 
    } 

    echo '</tr>' . "\n"; 
} 
echo '</table>' . "\n";` 

so che posso utilizzare il ciclo per alimentare la mia tabella di MySQL, ma non so come ... io non sono a conoscenza di programmazione orientata agli oggetti ...

Qualcuno può aiutarmi, per favore?

+1

La tua domanda è troppo ampia. Perché una documentazione di PHPExcel dovrebbe includere qualcosa su MySQL? – Jacob

risposta

6

Il primo for esegue il ciclo di righe e il secondo scorre tra le colonne. Quindi, ci sono molte soluzioni al tuo "problema".

È possibile, ad esempio, popolare un array e creare un'istruzione di inserimento per ogni riga. Come il seguente:

$rows = array(); 
for ($row = 1; $row <= $highestRow; ++$row) { 
    for ($col = 0; $col <= $highestColumnIndex; ++$col) { 
    $rows[$col] = mysql_real_espace_string($objWorksheet->getCellByColumnAndRow($col, $row)->getValue()); 
    } 

    mysql_query("INSERT INTO your_table (col1,col2) VALUES ($rows[1],$rows[2])"); 
} 

Ovviamente, questo codice può essere migliorata.

+0

Grazie Imad. Funziona bene La tua spiegazione mi ha aiutato. – mlh

+0

@ ml puoi pubblicare la soluzione? Ho lo stesso problema e non sono stato in grado di risolverlo – Fahad

+0

Questo codice ti dà l'errore "valore scalare ..."? EDIT: Ho appena trovato l'errore. Codice corretto –

5

Ecco il codice

$inputFileName = $upload_path . $filename; 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($inputFileName); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
$rows = array(); 
for ($row = 1; $row <= $highestRow; ++$row) { 
    for ($col = 0; $col <= $highestColumnIndex; ++$col) { 
    $rows[$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue(); 
    } 
    mysql_query("INSERT INTO upload (`item_number`,`qty_sold`,`cost_home`) VALUES ($rows[1],$rows[2],$rows[3])"); 
} 

?> 

ho cercato mysql_query ("INSERT INTO upload (col1, col2) VALORI ($ rows [1], $ file [2])"); ma non ha funzionato. Il tavolo rimane vuoto

+0

Posso sostituire mysql_query con 'echo implode ('', $ rows);' e restituisce i valori nel foglio di calcolo. – Fahad

+0

prova questo 'mysql_query (" INSERISCI INTO_table VALUES ('". $ Rows [1]."', '". $ Rows [2]."') ");' – ItShine

Problemi correlati