2011-11-22 14 views
9

Ok, quindi sono stato in grado di ottenere php per mostrare i dati nel foglio exx .xls ma questi stessi dati voglio essere in grado di inserire nella mia tabella. Io non riesco a capire che una parte fuori, ecco quello che ho ottenuto finora:Importare un file excel in una tabella 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>'; 
} 

btw PHPExcel è impressionante e non ho avuto il tempo di leggere attraverso tutto questo per comprendere appieno :(Ho per trasformare questo in da mercoledì .. Grazie in anticipo

Edit:. questa è l'idea che dovrebbe do..the valori parte è quello che sono sicuro di

$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

Così , sono questi compiti? Se sì, puoi taggarlo come tale ... – Jason

+0

Oh no non è compito a casa, è un freelance che ho affrontato e all'ultimo minuto hanno chiesto questa opzione e l'intero progetto deve essere entro mercoledì. Se fosse stato in .net, sarebbe stato fatto a questo punto, ma questo doveva essere fatto in php :( – Andres

+0

Che aspetto hai il file rispetto al tuo tavolo MySQL? – Jason

risposta

7

si dovrebbe creare un array e memorizzarlo nel database come questo ad esempio:

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

sembra fantastico, non ho ancora provato perché attualmente non ho accesso al ftp per caricare le modifiche, ma appena lo provo, lo contrassegnerò come risposta. Grazie! – Andres

+0

grazie ha funzionato magnificamente !! – Andres

1

se si desidera utilizzare PHPExcel per fare questo:

<?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]. "')"; 

} 
?> 
Problemi correlati