使用 fputcsv php 在 csv 上添加标题

Sef*_*ean 1 php csv fputcsv

我正在尝试将一些数据输入到一个 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

Don*_*nic 5

如果你打算用它来创建一个可以用 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 中打开且没有错误。