我有一个将值导出到CSV文件的函数,但是"comments"字段中包含逗号,当您在电子表格程序中打开它时,它会弄乱列.
有没有办法妥善出口?
//this exports only names and comments into a CSV file function exportNamesCommentsCSV($table, $columns) { $file = "volunteer_comments"; $csv_output = ''; $table = 'volunteers_2009'; $result = mysql_query("select * FROM ".$table.""); $i = 0; if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) { $csv_output .= $row['Field'].", "; $i++; } } $csv_output .= "\n"; $values = mysql_query("SELECT lname, fname, email, comments FROM ".$table.""); while ($rowr = mysql_fetch_row($values)) { for ($j=0;$j<$i;$j++) { $csv_output .= $rowr[$j].", "; } $csv_output .= "\n"; } $filename = $file."_".date("Y-m-d_H-i",time()); header("Content-type: application/vnd.ms-excel"); header("Content-disposition: csv" . date("Y-m-d") . ".csv"); header( "Content-disposition: filename=".$filename.".csv"); print $csv_output; exit; }
编辑:这将是评论的一个例子......
我更喜欢在大门工作,但我可以在任何地方工作.
上面示例注释中的(逗号)会抛出正确的列结构.
您需要做的是将值括在引号中,如下所示:
"value","value","value"
这将正确处理值中的逗号,数值仍然可以正常工作.
但是,要在值中加上引号,需要将两个引号放在一起.例如,表示此字符串:
Bobby says, "Hi!"
它需要表示为
"some value","Bobby says, ""Hi!""","Some other value"
你可以这样做:
$csv_value = "\"" . eregi_replace("\"", "\"\"", $orig_value) . "\"";
PHP具有处理为您制作逗号分隔文件的功能.
检查fputcsv
功能.它可以让你做这样的事情:
该文件file.csv
将包含此内容:
"this has, commas, in it",bbb,ccc,dddd 123,456,789,"this is ""like this""" 1234,124,1242,"yay, woo""!"""
稍后当你需要阅读它时,你可以使用它fgetcsv
.
因此,在您的情况下,您需要做的就是创建一个数组,每个数组都有名称和注释,然后通过它fputcsv
,你就是金色的.