2011-11-22 20 views
9

Ok por lo que he podido conseguir php para mostrar los datos en la hoja de Excel .xls, pero este mismo quiero de datos que sea capaz de insertar en mi mesa. Me parece que no puede entender esa parte, esto es lo que tengo hasta ahora:Importar archivo de Excel en una tabla MySQL con PHPExcel

$path = $_GET['file']; 
include("../class/sql.php"); 
require '../class/PHPExcel.php'; 
require_once '../class/PHPExcel/IOFactory.php'; 
$objPHPExcel = PHPExcel_IOFactory::load($path); 
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { 
    $worksheetTitle  = $worksheet->getTitle(); 
    $highestRow   = $worksheet->getHighestRow(); // e.g. 10 
    $highestColumn  = $worksheet->getHighestColumn(); // e.g 'F' 
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
    $nrColumns = ord($highestColumn) - 64; 
    echo '<br>Data: <table width="100%" cellpadding="3" cellspacing="0"><tr>'; 
    for ($row = 1; $row <= $highestRow; ++ $row) { 

     echo '<tr>'; 
     for ($col = 0; $col < $highestColumnIndex; ++ $col) { 
      $cell = $worksheet->getCellByColumnAndRow($col, $row); 
      $val = $cell->getValue(); 
      if($row === 1) 
      echo '<td style="background:#000; color:#fff;">' . $val . '</td>'; 
      else 
       echo '<td>' . $val . '</td>'; 
     } 
     echo '</tr>'; 
    } 
    echo '</table>'; 
} 

por cierto PHPExcel es impresionante y no he tenido tiempo de leer a través de toda ella para entender completamente :(tengo para convertir esto en el miércoles .. Gracias de antemano

Editar:. esta es la idea que debería do..the valores de parte es la que yo estoy seguro de

$sql = "insert into tablename (col1, col2, col3) values(...)"; 
//start at row 2 so headers are not inserted 
for ($row = 2; $row <= $highestRow; ++ $row) { 

    for ($col = 0; $col < $highestColumnIndex; ++ $col) { 
     $cell = $worksheet->getCellByColumnAndRow($col, $row); 
     $val = $cell->getValue(); 
     //here's my prob.. 
     echo $val; 
    } 
    $result = mysql_query($sql); 
} 
+0

Así , es esta tarea? Si es así, se puede etiquetar como tal .... – Jason

+0

Oh no, no es la tarea, es un independiente que abordé y último minuto que pidieron esta opción y todo el proyecto tiene que estar en el miércoles. Si hubiera estado en .net me hubiera sido hecho por ahora, pero esto tiene que ser hecho en php :( – Andres

+0

¿Qué vosotros más mirada de archivos como en comparación con su tabla de MySQL? – Jason

Respuesta

7

Usted debe crear una matriz y almacenarlo en la base de datos de esta manera, por ejemplo:

for ($row = 2; $row <= $highestRow; ++ $row) { 
$val=array() 
for ($col = 0; $col < $highestColumnIndex; ++ $col) { 
    $cell = $worksheet->getCellByColumnAndRow($col, $row); 
    $val[] = $cell->getValue(); 
    //here's my prob.. 
    //echo $val; 
} 

$sql="insert into tablename (col1, col2, col3) values(`".$val[0]."`, `".$val[1]."`, `".$val[2].")"; 
$result = mysql_query($sql); 


} 
+0

esto se ve increíble, todavía no lo he probado porque actualmente no tengo acceso al ftp para cargar los cambios, pero tan pronto como lo pruebe lo marcaré como respondí. ¡Gracias! – Andres

+0

gracias, funcionó maravillosamente !! – Andres

1

si desea utilizar PHPExcel para hacer esto:

<?php 
//include the following 2 files 
require 'Classes/PHPExcel.php'; 
require_once 'Classes/PHPExcel/IOFactory.php'; 

$SERVER = 'localhost'; 
$USERNAME = 'username'; 
$PASSWORD = 'password'; 
$DB = 'database'; 
$DSN = "mysql:host=".$SERVER.";dbname=".$DB.""; 
$connection = new PDO($DSN,$USERNAME,$PASSWORD); 

$path = "test.xlsx"; 

$objPHPExcel = PHPExcel_IOFactory::load($path); 
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { 
    $worksheetTitle  = $worksheet->getTitle(); 
    $highestRow   = $worksheet->getHighestRow(); // e.g. 10 
    $highestColumn  = $worksheet->getHighestColumn(); // e.g 'F' 
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
    $nrColumns = ord($highestColumn) - 64; 
    echo "<br>The worksheet ".$worksheetTitle." has "; 
    echo $nrColumns . ' columns (A-' . $highestColumn . ') '; 
    echo ' and ' . $highestRow . ' row.'; 
    echo '<br>Data: <table border="1"><tr>'; 
    for ($row = 1; $row <= $highestRow; ++ $row) { 
     echo '<tr>'; 
     for ($col = 0; $col < $highestColumnIndex; ++ $col) { 
      $cell = $worksheet->getCellByColumnAndRow($col, $row); 
      $val = $cell->getValue(); 
      $dataType = PHPExcel_Cell_DataType::dataTypeForValue($val); 
      echo '<td>' . $val . '<br>(Typ ' . $dataType . ')</td>'; 
     } 
     echo '</tr>'; 
    } 
    echo '</table>'; 
} 

for ($row = 2; $row <= $highestRow; ++ $row) { 
    $val=array(); 
for ($col = 0; $col < $highestColumnIndex; ++ $col) { 
    $cell = $worksheet->getCellByColumnAndRow($col, $row); 
    $val[] = $cell->getValue(); 
} 

$Connection="INSERT INTO `users` (name, family, type) VALUES ('".$val[1] . "','" . $val[2] . "','" . $val[3]. "')"; 

} 
?> 
Cuestiones relacionadas