我正在尝试将一些数据输入到一个 csv 文件中并且它运行良好,但是如果我尝试添加数据表的标题,Excel 将不会让我打开该文件,因为“文件格式和扩展名。 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);
Run Code Online (Sandbox Code Playgroud)
编辑:
这是我用记事本打开的 csv 的第一行:
ID;名称;参考;数量
2;"衬衫 - 颜色:白色,尺码:M";demo_2;6
3;"印花连衣裙 - 颜色:橙色,尺码:S";demo_3;4
如果你打算用它来创建一个可以用 Excel 正常打开的 CSV 文件,标题不需要用双引号括起来(因为它们不包含任何分隔符),你应该使用逗号而不是分号作为分隔符。但是,如果您进行了这些更改,当您尝试使用 Excel 打开生成的文件时,您仍然会收到相同的错误消息。令人惊讶的是,这是因为您的标题以 'ID' 开头。
如果您可以为第一列标题使用不同的名称,则可以简化一些事情。
$headers = ["ItemID", "Name", "Ref", "Quantity"];
$csvName = "file.csv";
$fileHandle = fopen($csvName, 'w') or die('Can\'t create .csv file, try again later.');
//Add the headers
fputcsv($fileHandle, $headers);
//Add the data
foreach ($info as $item) {
fputcsv($fileHandle, $item);
}
//close file
fclose($fileHandle);
Run Code Online (Sandbox Code Playgroud)
这应该会创建一个 .csv 文件,该文件将在 Excel 中打开且没有错误。
| 归档时间: |
|
| 查看次数: |
4453 次 |
| 最近记录: |