使用PHP将CSV文件显示为HTML表的问题

时间:2014-03-10 15:23:08

标签: php html csv

我正在尝试在HTML表格中显示两列四行CSV文件。我有下面的代码,但它只显示第一行,我不明白为什么。

<html>
<head>
    <title>test</title>
</head>
<body>
    <table border=1>
        <?PHP
        $file_handle = fopen("oee1.csv", "r");
        while (!feof($file_handle) ) {
            $line_of_text = fgetcsv($file_handle, 1024);
            echo '<tr><td>' . $line_of_text[0] . '</td><td>' . $line_of_text[1] . '</td></tr>';
        }  
        fclose($file_handle);
        ?>
    </table>
</body>
</html>

csv文件如下所示:

test1, 1
test2, 2
test3, 3
test4, 4

2 个答案:

答案 0 :(得分:3)

你没有遍历每一行。 尝试这样的事情:

<!DOCTYPE html>
<html>
    <head>
        <title>+test</title>
    </head>
    <body>
        <?php
            if (($file_handle = fopen("data.csv", "r")) !== false) {
                $str = '';
                $str .= '<table>';
                while (($data = fgetcsv($file_handle, 1024, ",")) !== false) {
                    $str .= '<tr>';
                    foreach ($data as $key => &$value) {
                        $str .= "<td>$value</td>";
                    }
                    $str .= '</tr>';
                }
                fclose($file_handle);
                $str .= '</table>';
                echo $str;
            }
        ?>
    </body>
</html>

输出:

<table>
    <tbody>
        <tr>
            <td>test1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>test2</td>
            <td>2</td>
        </tr>
        <tr>
            <td>test3</td>
            <td>3</td>
        </tr>
        <tr>
            <td>test4</td>
            <td>4</td>
        </tr>
    </tbody>
</table>

PS:确保您拥有权限,并且您的csv作为您的php文件位于smae目录中。

参考:fgetcsv

答案 1 :(得分:0)

尝试在循环的每次迭代中添加对fgets($file_handle);的调用,你必须以某种方式推进文件句柄指针。