【问题标题】:How to read a CSV file using PHP and display content in Table/DIV?如何使用 PHP 读取 CSV 文件并在 Table/DIV 中显示内容?
【发布时间】:2012-12-05 13:52:38
【问题描述】:

我正在使用以下 PHP 代码读取包含两列(例如 x、y)的 CSV 文件并在表格中显示内容:

<?Php 

echo "<html><body><table border=1>\n\n";
$f = fopen("data2.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>";
?> 

但是,我现在正在使用一个新表格(见下文),我想用它来显示包含 1/2/3/4 等的单元格中的 A 列和包含 5/6/7/ 的单元格中的列 B 8.

我该怎么做?

<table style="text-align: left; width: 406px; height: 200px;"
 border="0" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td width="25"></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td width="70"></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td colspan="4" rowspan="1">1</td>
      <td>&nbsp;</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td colspan="3" rowspan="1">5</td>
    </tr>
    <tr>
      <td></td>
      <td colspan="4" rowspan="1">2</td>
      <td>&nbsp;</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td colspan="3" rowspan="1">6</td>
    </tr>
    <tr>
      <td></td>
      <td colspan="4" rowspan="1">3</td>
      <td>&nbsp;</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td colspan="3" rowspan="1">7</td>
    </tr>
    <tr>
      <td></td>
      <td colspan="4" rowspan="1">4</td>
      <td>&nbsp;</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td colspan="3" rowspan="1">8</td>
    </tr>
  </tbody>
</table>

【问题讨论】:

  • 表格的前五行是什么?
  • 直到这部分 1
  • 您必须更好地描述您要查找的内容。就目前的情况来说,真的很难说。
  • 基本上,我希望 CVS 文件中的第一个值显示在包含数字/值“1”的单元格中(查看代码的底部),第二个显示在单元格中包含数字/值“4”等等。我故意用数字填充了一些单元格,以显示我想要显示值的位置。

标签: php html html-table import-from-csv


【解决方案1】:

csv 是逗号分隔值。所以它是一个可以使用 file() 查看和访问的基本文本文件,你可以使用 "\n\r" 或 "\n"

  <?php 
     $data = file("all.csv");
     echo $dataintext = implode("\n",$data);
   ?>

脚本从这里开始 tester()

    function tester(){
$.post("read.php",{action:'login'},function(data){
    $("#textarea").val(data);
    });
}

html 从这里开始

 <body> 
     <a href="javascript:tester();">read</a> 
     <textarea id="textarea" width="100%" height="100%" ></textarea>
</body>

【讨论】:

    【解决方案2】:

    使用“fread($f, filesize(filename.kit)”代替 fgetcsv。

    <?Php 
    echo "<html><body><table border=1>";
    $f = fopen("data2.csv", "r");
    $fr = fread($f, filesize("data2.csv"));
    fclose($f);
    $lines = array();
    $lines = explode("\n\r",$fr); // IMPORTANT the delimiter here just the "new line" \r\n, use what u need instead of... 
    
    for($i=0;$i<count($lines);$i++)
    {
        echo "<tr>";
        $cells = array(); 
        $cells = explode(";",$lines[$i]); // use the cell/row delimiter what u need!
        for($k=0;$k<count($cells);$k++)
        {
           echo "<td>".$cells[$k]."</td>";
        }
        // for k end
        echo "</tr>";
    }
    // for i end
    echo "</table></body></html>";
    ?> 
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签