2011-08-23 21 views
15

Encontré la biblioteca PHPExcel brillante para manipular archivos de Excel con PHP (leer, escribir, etc.).Lectura de una hoja XLSX para alimentar una tabla MySQL usando PHPExcel

Pero en ninguna parte de la documentación se explica cómo leer una hoja de trabajo XLSX para alimentar a una tabla de MySQL ...

Lo siento por esta pregunta tonta, pero lo necesito para mi trabajo y no encontró respuesta en el web.

Un pequeño ejemplo podría ser muy útil.

Muchas gracias.

Actualizado:

que precisa mi pregunta:

La única parte del código que encontré en la documentación que me podría ayudar es leer un archivo de Excel y lo mostrará en una tabla 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";` 

sé que puedo utilizar el bucle para alimentar a mi tabla de MySQL, pero no saben cómo ... no estoy al tanto de programación orientada a objetos ...

¿Alguien puede ayudarme, por favor?

+1

Su pregunta es demasiado amplia. ¿Por qué una documentación de PHPExcel debería incluir algo sobre MySQL? – Jacob

Respuesta

6

El primer for se desplaza por las filas y el segundo pasa por las columnas. Entonces, hay muchas soluciones para su "problema".

Podría, por ejemplo, completar una matriz y hacer una instrucción de inserción para cada fila. Como lo siguiente:

$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])"); 
} 

Obviamente, este código se puede mejorar.

+0

Gracias Imad. Eso funciona bien Tu explicación me ayudó. – mlh

+0

@mlh ¿puede publicar su solución? Tengo el mismo problema y no he podido resolverlo – Fahad

+0

Este código le da el error "valor escalar ..."? EDITAR: Acabo de encontrar el error. Código corregido –

5

Este es el código

$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])"); 
} 

?> 

me han tratado mysql_query ("INSERT INTO carga (col1, col2) VALORES ($ filas [1], $ filas [2])"); también pero no funcionó. La tabla permanece vacía

+0

Puedo reemplazar mysql_query con 'echo implode ('', $ rows);' y devuelve los valores en la hoja de cálculo. – Fahad

+0

intente esto 'mysql_query (" INSERT INTO your_table VALUES (''. $ Rows [1]. "','". $ Rows [2]. "')"); ' – ItShine

Cuestiones relacionadas