【发布时间】:2017-08-03 15:51:13
【问题描述】:
我正在尝试将一些数据输入到 csv 文件中,它运行良好,但如果我尝试添加数据表的表头,Excel 不会让我打开文件,因为“文件格式和扩展名的 file.csv 不匹配。文件可能已损坏或不安全”。
代码如下:
//crate headers
$headers[] = "ID";
$headers[] = "Name";
$headers[] = "Ref";
$headers[] = "Quantity";
// crete and open file
$csvName = "file.csv";
$fileHandle = fopen($csvName, 'w') or die('Can\'t create .csv file, try again later.');
//Add the headers, if I take this line out the excel allows me to open the file
fputcsv($fileHandle,$headers,";");
//Add the data
for($i = 0; $i < count($info); ++$i) {
fputcsv($fileHandle,$info[$i],";");
}
//close file
fclose($fileHandle);
编辑:
这是我用记事本打开的 csv 的第一行:
ID;姓名;参考;数量
2;"衬衫 - 颜色:白色,尺码:M";demo_2;6
3;"印花连衣裙 - 颜色:橙色,尺码:S";demo_3;4
【问题讨论】:
-
你使用单引号和双引号的方式给我留下了精神创伤。您应该在不需要interpolation 的任何内容上使用单引号,在需要的任何内容上使用双引号。基本上,你所有的双引号在你的代码中都应该是单引号
-
您能在文本编辑器中打开您的 csv 文件输出并与我们分享它的内容吗?也许只需要前 3-4 行就足够了
-
是的,我知道,我最初有单引号,我从单引号更改为双引号只是为了检查它是否会由于某种原因使其工作,但事实并非如此。忘记改回来了。
-
@GrumpyCrouton 完成