我使用通用算法编写理论上适用于主要操作系统的CSV文件。但是,客户在几周前开始使用Mac,他们一直告诉我在Microsoft Excel 2008 for Mac 12.2.1中无法读取CSV文件。使用PHP为Mac用户编写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用户可以正常读取文件?
你试过用第三个替换第一个头选项吗? – pnuts 2015-05-31 02:20:19