2010-09-30 5 views
0

J'ai une table, construite en PHP qui affiche les résultats d'une table mysql.Télécharger les données du tableau HTML pour exceler

comme ceci:

$sql = mysql_query("SELECT * FROM survey"); 

      echo "<table border='1'> 
      <tr> 
      <th>Question 1</th> 
      <th>Question 2</th> 
      <th>Question 3</th> 
      <th>Question 4</th> 
      <th>Question 5</th> 
      <th>Question 6</th> 
      <th>Question 7</th> 
      <th>Question 8</th> 
      <th>Question 9</th> 
      <th>Question 10</th> 
      <th>Question 11</th> 
      <th>Question 12</th> 
      <th>Question 13</th> 
      <th>Question 14</th> 
      <th>eMail</th> 
      </tr>"; 

      while ($row = mysql_fetch_array($sql)) 
      { 
       echo "<tr>"; 
       echo "<td>" . $row['Question1'] . "</td>"; 
       echo "<td>" . $row['Question2'] . "</td>"; 
       echo "<td>" . $row['Question3'] . "</td>"; 
       echo "<td>" . $row['Question4'] . "</td>"; 
       echo "<td>" . $row['Question5'] . "</td>"; 
       echo "<td>" . $row['Question6'] . "</td>"; 
       echo "<td>" . $row['Question7'] . "</td>"; 
       echo "<td>" . $row['Question8'] . "</td>"; 
       echo "<td>" . $row['Question9'] . "</td>"; 
       echo "<td>" . $row['Question10'] . "</td>"; 
       echo "<td>" . $row['Question11'] . "</td>"; 
       echo "<td>" . $row['Question12'] . "</td>"; 
       echo "<td>" . $row['Question13'] . "</td>"; 
       echo "<td>" . $row['Question14'] . "</td>"; 
       echo "<td>" . $row['eMail'] . "</td>";    
      } 
      echo "</table>"; 

Ce que je veux faire est sortie ce tableau dans un fichier Excel, sans aucun code source ou balises de table. Y a-t-il un moyen de le faire? J'ai été submergé d'informations sur internet et je ne sais pas exactement ce dont j'ai besoin.

Si possible, je préférerais faire cela avec PHP, et sans bibliothèques supplémentaires.

+0

Check out feuille de calcul Excel PEAR Writer http://pear.php.net/package/Spreadsheet_Excel_Writer/Il devrait faire ce dont vous avez besoin. –

Répondre

3

Voulez-vous télécharger un fichier Excel à l'aide de votre script PHP (IE- les sorties PHP un fichier .xls) ou voulez-vous qu'il produit une sortie HTML que vous pouvez copier/coller dans un fichier Excel sans perdre le formatage?

Si l'ancien, regardez dans this nifty tool

Si vous voulez juste pour produire du HTML que vous pouvez copier/coller dans Excel, aussi longtemps que votre table est correctement formaté (et à partir de votre code source, il ressemble vous devez ajouter un </tr > à la fin de la boucle while), alors vous devriez juste être en mesure de drag and drop it

Sinon, Excel devrait être assez intelligent pour reconnaître les tables HTML, tant qu'il n'y a pas <html> tag l'encapsulant. this article explique le processus, mais essentiellement vous pouvez envoyer un fichier Excel (selon la première suggestion « outil astucieux ») avec juste:

header("Content-type: application/vnd.ms-excel"); 
echo " 
<table> 
    ... 
</table>"; 
+0

Salut steven, j'ai téléchargé l'outil 'nifty' :) parce que je veux utiliser mon script PHP pour sortir le fichier Excel, mais je suis un peu perdu quant à ce qu'il faut faire ensuite. Des conseils? – 109221793

+0

L'installation est juste une question de copier le contenu de/Classes à n'importe où sur votre site Web.Après cela vous avez besoin de ("PHPExcel.php") et créez un nouveau PHPExcel() (c'est une classe, donc seulement $ myObject = new PHPExcel()). Vous pouvez changer les cellules avec $ myObject-> setCellValue ('A1', "value"); – stevendesu

+0

Regardez /Tests/01simple.php pour un exemple de feuille Excel. – stevendesu

0

Vous pouvez utiliser csv (valeurs séparées par des virgules) qui peut être ouvert par Excel:

while ($row = mysql_fetch_array($sql)) 
{ 
    echo '"'. $row['Question1'] . '";'; 
    echo '"'. $row['Question2'] . '";'; 
    echo '"'. $row['Question3'] . '";'; 
    echo '"'. $row['Question4'] . '";'; 
    echo '"'. $row['Question5'] . '";'; 
    echo '"'. $row['Question6'] . '";'; 
    echo '"'. $row['Question7'] . '";'; 
    echo '"'. $row['Question8'] . '";'; 
    echo '"'. $row['Question9'] . '";'; 
    echo '"'. $row['Question10'] . '";'; 
    echo '"'. $row['Question11'] . '";'; 
    echo '"'. $row['Question12'] . '";'; 
    echo '"'. $row['Question13'] . '";'; 
    echo '"'. $row['Question14'] . '";'; 
    echo '"'. $row['eMail'] . '"\n';   
} 
+0

savez-vous ce que PHP j'utilise une fois que je fais cela? – 109221793

2

bien sortie Excel format natif serait assez complexe .. c'est pourquoi il y a des bibliothèques pour elle. CSV d'autre part est facile et Excel peut lire cela.

$filePath = sys_get_temp_dir() . '/test.csv'; 
$file = fopen($filePath, '-w'); 

while (false !== ($row = mysql_fetch_array($sql))) 
{ 
    fputcsv($file, $row); 
} 

// rewind both pointers 
mysql_data_seek($sql, 0); 
fseek($file, 0); 

// add headers 
$rowForHeaders = mysql_fetch_array($sql); 
fputcsv($file, array_keys($rowforHeaders)); 

fclose($file); 


// to send the file via the http response 
header('Content-type: application/vnd.ms-excel'); 
header('Content-disposition: attachment; filename="mytable.csv"'); 
header('Content-length: '.filesize($filePath)); 
print file_get_contents($filePath); 
exit; 
+0

Selon http://www.greggriffiths.org/webdev/both/excel/, vous pouvez simplement sortir un tableau HTML avec l'en-tête approprié et Excel le lira – stevendesu

+0

Que je ne savais pas! – prodigitalson

+0

Salut, je reçois les erreurs suivantes lorsque je lance le ci-dessus .... Attention: fopen (C: \ Utilisateurs \ TaraW \ Desktop) [fonction.fopen]: n'a pas réussi à ouvrir le flux: Aucune erreur dans .. Attention: fseek() s'attend à ce que le paramètre 1 soit resource, boolean donné .... Attention: fputcsv() s'attend à ce que le paramètre 1 soit resource, boolean donné .... Attention: fclose() attend que le paramètre 1 soit resource, boolean donné. .. – 109221793

Questions connexes