在网页上将 CSV 文件动态显示为 HTML 表格

2022-08-30 14:21:12

我想在服务器端获取一个CSV文件,并将其动态显示为html表。例如,这个:

Name, Age, Sex
"Cantor, Georg", 163, M

应该变成这样:

<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>

欢迎任何语言的解决方案。


答案 1

以前链接的解决方案是一段可怕的代码;几乎每一行都包含一个错误。请改用 fgetcsv

<?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>";

答案 2

这是一个使用php将csv转换为html表的简单函数:

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);
}

可以像这样调用此函数jj_readcsv('image_links.csv',true);

如果第二个参数为真,则 csv 的第一行将被视为标题/标题。

希望这对某人有所帮助。请注释此代码中的任何缺陷。


推荐