我使用通用算法来编写理论上适用于主要操作系统的 CSV 文件。但是,客户几周前开始使用 Mac,他们一直告诉我无法在 Microsoft Excel 2008 for Mac 12.2.1 中读取 CSV 文件。
他们的操作系统配置为使用“分号;” 作为列表分隔符,这正是我在 CSV 中所写的。他们还说,当他们在记事本中打开文件时,他们注意到没有换行符,所有内容都显示在一行中;这就是 Excel 无法正确读取文件的原因;但在我的代码中,我使用的是跨浏览器换行符\r\n
这是我使用的完整代码:
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/x-csv");
//header("Content-type: text/csv");
//header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=participantes.csv");
$separator = ";";
$rs = $sql->doquery("SELECT A QUERY TO RETRIEVE DATA FROM THE DB");
$header = "";
$num_fields = mysql_num_fields($rs);
for($i=0; $i<$num_fields; $i++){
$field = mysql_field_name($rs, $i);
$header .= $field.$separator;
}
echo $header."\r\n";
while($row = $sql->fetch($rs)){
$str = "";
for($i=0; $i<$num_fields; $i++){
$field = mysql_field_name($rs, $i);
$value = str_replace(";", ",", $row->{$field});
$value = str_replace("\n", ",", $value);
$value = str_replace("\d", ",", $value);
$value = str_replace(chr(13), ",", $value);
$str .= $value.$separator;
}
echo $str."\r\n";
}
有什么我可以做的,以便 Mac 用户可以正确读取文件?