使用php将csv文件导入特定的行和列到表中

时间:2013-08-23 11:52:05

标签: php csv fgetcsv

我对php非常陌生,但已经成功地尝试使用'fgetcsv'引入CSV文件并将其转换为html表。

但是我还有一个包含70列和700行的大型CSV文件,但我只想在一个表中显示第1列到第47列和第3行到第21行,然后在另一个表中显示第22到44行。

我很感激一些帮助,下面是我目前正在使用的代码:

<?php

$row = 1;
if (($handle = fopen("CSV/test.csv", "r")) !== FALSE) {

    echo '<table border="1">';

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        if ($row == 1) {
            echo '<thead><tr>';
        }else{
            echo '<tr>';
        }

        for ($c=0; $c < $num; $c++) {
            //echo $data[$c] . "<br />\n";
            if(empty($data[$c])) {
               $value = "&nbsp;";
            }else{
               $value = $data[$c];
            }
            if ($row == 1) {
                echo '<th>'.$value.'</th>';
            }else{
                echo '<td>'.$value.'</td>';
            }
        }

        if ($row == 1) {
            echo '</tr></thead><tbody>';
        }else{
            echo '</tr>';
        }
        $row++;
    }

    echo '</tbody></table>';
    fclose($handle);
}
?>

2 个答案:

答案 0 :(得分:0)

列的

试试这个

for ($c=0; $c < 47; $c++) {
        //echo $data[$c] . "<br />\n";
        if(empty($data[$c])) {
           $value = "&nbsp;";
        }else{
           $value = $data[$c];
        }
        if ($row == 1) {
            echo '<th>'.$value.'</th>';
        }else{
            echo '<td>'.$value.'</td>';
        }
    }

因此,您可以在第0列和第47列之间打印单元格。 对于行,您必须设置一个计数器,并在while语句中使用if来打印所需范围内的行。如果您不需要其他条件,最好在第44行之后设置退出条件。

答案 1 :(得分:0)

<?php

$row = 1;

if(($handle = fopen("CSV/test.csv", "r")) !== false) {

    $table1 = $table2 = '<table border="1">';

    while (($data = fgetcsv($handle, 1000, ",")) !== false) {

        $table1Add = $table2Add = false;
        if($row >=3 && $row <= 21)
            $table1Add = true;
        if($row >=22 && $row <= 44)
            $table2Add = true;

        $num = count($data);

        if($row == 1) {

            $table1 .= '<thead><tr>';
            $table2 .= '<thead><tr>';

            for($c = 1; $c <= 47; $c++) {
                $value = empty($data[$c]) ? "&nbsp;" : $data[$c];

                $table1 .= '<th>'.$value.'</th>';
                $table2 .= '<th>'.$value.'</th>';
            }

            $table1 .= '</tr></thead><tbody>';
            $table2 .= '</tr></thead><tbody>';

        } else {

            if($table1Add) $table1 .= '<tr>';
            if($table2Add) $table2 .= '<tr>';

            for($c = 1; $c <= 47; $c++) {
                $value = empty($data[$c]) ? "&nbsp;" : $data[$c];

                if($table1Add) $table1 .= '<td>'.$value.'</td>';
                if($table2Add) $table2 .= '<td>'.$value.'</td>';
            }

            if($table1Add) $table1 .= '</tr>';
            if($table2Add) $table2 .= '</tr>';

        }

        $row++;

    }

    $table1 .= '</tbody></table>';
    $table2 .= '</tbody></table>';
    fclose($handle);

    echo $table1;
    echo $table2;
}
?>