所以我一直在尝试创建一个简单的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文件一样。
答案 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