Nasıl düzgün içinde virgül ile tablo kayıt değeri ile CSV dosyası aktarırım?

4 Cevap php

Ben bir CSV dosyasına değerleri ihraç eden bir işlevi var, ama "yorumlar" alan içinde virgül varsa ve bir elektronik tablo programında açtığınızda sütunları kadar karışıyor.

Düzgün ihracat etrafında bir yolu var mı?

//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;
}

EDIT: Bu bir yorumdur örnek olacaktır ...

Ben kapıları çalışmayı tercih ediyorum, ama her yerde gerçekten çalışabilirsiniz.

Yukarıdaki örnekte açıklamada, (virgül) uygun sütun yapısı atıyor.

4 Cevap

Ne yapmak gerekiyor bu yüzden gibi, tırnak değerleri içine olduğunu:

"value","value","value"

Bu, doğru değerleri virgül idare edecek, ve sayısal değerler de ince çalışacaktır.

Değerinde bir teklif koymak için, ancak, birlikte iki tırnak koymak gerekir. Örneğin Bu dizeyi temsil:

Bobby says, "Hi!"

Bu olarak temsil edilmesi gerekir

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

Sen ile yapabilirsiniz:

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

Bir eleme girişi kaydırmak isteyeceksiniz; genellikle tırnak.

"col1", "col2,,,", "col3"

Giriş tırnak içeriyorsa, onlara bölüşmek gerekir.

İşte Wikipedia makale bulunuyor

Ne istediğinizi elde etmek için tek yolu bir arama yapmak ve "yorumlar" alanına yerine, bu gömülü virgül içerebilir daha tek alan olduğundan emin konum varsayarak olmaktır.

Sen de onlar da sizin csv dosyası ithalat ile karışıklık olacak, sizin not alan CR veya LF içeremez kontrol etmek gerekebilir.