csv文件创建不正确

时间:2014-03-03 20:39:00

标签: php csv fputcsv

所以我一直在尝试创建一个简单的csv文件作为下面的代码,但csv文件没有正确创建。它包含我的.php文件中的html文本。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>CVS File</title>
</head>

<body>

<table width="370" border="0" cellspacing="0" cellpadding="0">
    <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
    <tr>
        <td><h1> Ultracom </h1></td>
        <td align="right" valign="middle">
          <input name="csv" type="file" id="csv" />
          <input type="submit" id="btnsubmit" name="btnsubmit" value="Submit" />
        </td>
    </tr>   
    <tr>
        <td><input type="submit" id="btnedit" name="btnedit" value="Edit" /></td>
        <td></td>
    </tr>
    <tr>
        <td><input type="submit" id="btnupdate" name="btnupdate" value="Update" /></td>
        <td><input type="submit" id="btncancel" name="btncancel" value="Cancel" /></td>
    </tr>
    </form>
</table>

<?php
if (isset($_POST['btnupdate'])) {

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=edited.csv');
$file = fopen("edited.csv","w");

$row = 2;
$a = "a";
$b = "b";

for ($r=0; $r < $row; $r++) {
    $rows[$r] = $a.",".$b;
}

foreach ($rows as $details) {
  fputcsv($file,explode(',',$details));
}

fclose($file);
}
?>

我的代码有什么问题吗?我的代码看起来和其他代码一样,就像我在google上创建的csv文件一样。

1 个答案:

答案 0 :(得分:1)

多么浪费......

for ($r=0; $r < $row; $r++) {
    $rows[$r] = array($a, $b); // build an array of arrays...
}

foreach($rows as $details) {
   fputcsv($file, $details);  // use the array directly
}

从不同的数据位构建一个字符串有一点零点,只是为了稍后将该单个字符串分解回不同的数据位。

就代码的其余部分而言,如果您打算将csv下载到客户端浏览器,那么一旦构建完csv,您就永远不会输出它。你需要

...
fclose($file);
readfile($file); // dump to client