2009-10-29 6 views

Répondre

11
$query = "SELECT * FROM table_name"; 

$export = mysql_query ($query) or die ("Sql error : " . mysql_error()); 

$fields = mysql_num_fields ($export); 

for ($i = 0; $i < $fields; $i++) 
{ 
    $header .= mysql_field_name($export , $i) . "\t"; 
} 

while($row = mysql_fetch_row($export)) 
{ 
    $line = ''; 
    foreach($row as $value) 
    {            
     if ((!isset($value)) || ($value == "")) 
     { 
      $value = "\t"; 
     } 
     else 
     { 
      $value = str_replace('"' , '""' , $value); 
      $value = '"' . $value . '"' . "\t"; 
     } 
     $line .= $value; 
    } 
    $data .= trim($line) . "\n"; 
} 
$data = str_replace("\r" , "" , $data); 

if ($data == "") 
{ 
    $data = "\n(0) Records Found!\n";       
} 

header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=your_desired_name.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print "$header\n$data"; 
+0

Une combinaison d'ArneRie et votre réponse fonctionne parfaitement bien – Arc

5

ehm?

<a href="yourexport.php" title="export as csv">Export as CSV</a> 

et si vous cherchez Wich script peut faire:

$myArray = array(); 

$fp = fopen('export.csv', 'w'); 

foreach ($myArray as $line) { 
    fputcsv($fp, split(',', $line)); 
} 

fclose($fp); 
+0

note: fputcsv ne fonctionne que sur PHP5. – Raptor

+0

split est obsolète ... – Raja

3

CSV = Comma Separated Values ​​= Séparer vos valeurs par des virgules

vous devez echo/imprimer votre ligne de résultat par ligne, séparés par une virgule (,).

Je suppose que votre requête $ est le jeu de résultats de votre requête, qui est un tableau associatif:

while($query = mysql_fetch_assoc($rs)) { 
    // loop till the end of records 
    echo $query["field1"] . "," . $query["field2"] . "," . $query["field3"] . "\r\n"; 
} 

où rs $ est la poignée de ressources.

Pour que le navigateur affiche une boîte de téléchargement, vous devez définir l'en-tête au début du fichier (en supposant que votre nom de fichier est export.csv):

header("Expires: 0"); 
header("Cache-control: private"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Description: File Transfer"); 
header("Content-Type: application/vnd.ms-excel"); 
header("Content-disposition: attachment; filename=export.csv"); 

Ca y est!

p.s. Cette méthode ne laissera pas un fichier physique dans le serveur. Si vous avez l'intention de générer un fichier sur le serveur, utilisez les fonctions traditionnelles fopen et fwrite.

Questions connexes