Je voudrais prendre un fichier CSV vivant côté serveur et l'afficher dynamiquement comme une table html. Par exemple, ceci:
Name, Age, Sex
"Cantor, Georg", 163, M
devrait devenir ceci:
<html><body><table>
<tr> <td>Name</td> <td>Age</td> <td>Sex</td> </tr>
<tr> <td>Cantor, Georg</td> <td>163</td> <td>M</td> </td>
</table></body></html>
Les solutions dans toutes les langues sont les bienvenues.
solution précédemment liée est un horrible morceau de code; presque chaque ligne contient un bug. Utilisez fgetcsv à la place:
<?php
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
echo "<tr>";
foreach ($line as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
Voici une fonction simple pour convertir csv en table html en utilisant php:
function jj_readcsv($filename, $header=false) {
$handle = fopen($filename, "r");
echo '<table>';
//display header row if true
if ($header) {
$csvcontents = fgetcsv($handle);
echo '<tr>';
foreach ($csvcontents as $headercolumn) {
echo "<th>$headercolumn</th>";
}
echo '</tr>';
}
// displaying contents
while ($csvcontents = fgetcsv($handle)) {
echo '<tr>';
foreach ($csvcontents as $column) {
echo "<td>$column</td>";
}
echo '</tr>';
}
echo '</table>';
fclose($handle);
}
On peut appeler cette fonction comme jj_readcsv('image_links.csv',true);
si le second paramètre est vrai, la première ligne de csv sera prise comme en-tête/titre.
J'espère que cela aide quelqu'un. Veuillez commenter les défauts de ce code.
la réponse de phihag place chaque ligne dans une seule cellule, tandis que vous demandez que chaque valeur soit dans une cellule distincte. Cela semble le faire:
<?php
// Create a table from a csv file
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
$row = $line[0]; // We need to get the actual row (it is the first element in a 1-element array)
$cells = explode(";",$row);
echo "<tr>";
foreach ($cells as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?>