2010-01-14 24 views

risposta

18

L'importazione da file Excel (XLS) è molto più difficile di quella dei file CSV. Di solito salvare il mio XLS a CSV con Excel quindi lavorare su questo CSV con PHP ...

Guardate funzione PHP fgetcsv a: http://ca.php.net/manual/en/function.fgetcsv.php

<?php 
$row = 1; 
if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 
    } 
    fclose($handle); 
} 
?> 

Se si desidera continuare a caricare XLS direttamente da PHP è possibile (ma quanto affidabile) ... Una rapida ricerca ha prodotto http://sourceforge.net/projects/phpexcelreader/ che potrebbe essere utile.

+0

D'altra parte, per Excel 2007, http://phpexcel.codeplex.com/ è veramente bello. – AlexV

0

La migliore scommessa è quella di esportare da Excel in un file CSV (valori separati da virgola). Questi file sono facili da analizzare e caricare. Se stai leggendo direttamente da un file XLS, non sono sicuro di come farlo. Potresti voler vedere se esiste una libarary per PHP in grado di leggere i file di dati di Excel.

8

Piuttosto possibile. Puoi salvare il tuo file Excel come file CSV e usare fgetcsv() per leggere quel file in PHP. fgetcsv() analizzerà i dati in un array, che sarà quindi possibile creare query SQL per inserirli nel database.

Se tutto quello che stai facendo è mettere in un database, si potrebbe essere in grado di bypassare la necessità di uno script PHP del tutto e basta usare LOAD DATA INFILE la sintassi di MySQL sul vostro file CSV invece:

LOAD DATA LOCAL INFILE '/importfile.csv' 
INTO TABLE test_table 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(field1, filed2, field3); 
0

Here è un tutorial sulla lettura/scrittura di un foglio di calcolo Excel direttamente (senza dover esportare in CSV). I pacchetti necessari sono disponibili da SourceForge e PEAR (vedi articolo).

-1
<? 
i$db = mysql_connect(“localhost”, “root”, “”) or die(“Could not connect.”); 

if(!$db) 

die(“no db”); 

if(!mysql_select_db(“test”,$db)) 

die(“No database selected.”); 

if(isset($_POST['submit'])) 

{ 

$filename=$_POST['filename']; 

$handle = fopen(“$filename”, “r”); 

while (($data = fgetcsv($handle, 1000, “,”)) !== FALSE) 

{ 

$import=”INSERT into sample(name,email) values(‘$data[0]‘,’$data[1]‘)”; 

mysql_query($import) or die(mysql_error()); 

} 

fclose($handle); 

print “Import done”; 

} 

else 

{ 

print “<form action=’import.php’ method=’post’>”; 

print “Type file name to import:<br>”; 

print “<input type=’text’ name=’filename’ size=’20′><br>”; 

print “<input type=’submit’ name=’submit’ value=’submit’></form>”; 

} 
?> 

Source