当前位置:  开发笔记 > 编程语言 > 正文

如何正确导出包含表记录值并带有逗号的CSV文件?

如何解决《如何正确导出包含表记录值并带有逗号的CSV文件?》经验,为你挑选了2个好方法。

我有一个将值导出到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;
}

编辑:这将是评论的一个例子......

我更喜欢在大门工作,但我可以在任何地方工作.

上面示例注释中的(逗号)会抛出正确的列结构.



1> Fritz H..:

您需要做的是将值括在引号中,如下所示:

"value","value","value"

这将正确处理值中的逗号,数值仍然可以正常工作.

但是,要在值中加上引号,需要将两个引号放在一起.例如,表示此字符串:

Bobby says, "Hi!"

它需要表示为

"some value","Bobby says, ""Hi!""","Some other value"

你可以这样做:

$csv_value = "\"" . eregi_replace("\"", "\"\"", $orig_value) . "\"";



2> Paolo Bergan..:

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,你就是金色的.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有