導出csv文件時,處理分隔符問題(轉)

轉自:http://blog.sina.com.cn/s/blog_468530a60100kjpy.htmlphp

 

CSV文件默認以英文逗號作爲列分隔符,換行符做爲行分隔符。
若是不提供網頁形式只用命令行或二進制程序輸出數據到CSV,只須要將數據段按,分割,行按\n分割,寫入到一個.csv文件便可。
但有時字段裏含有,和換行符就麻煩了,數據輸出會出現混亂。html

這時能夠使用雙引號"來將每一個字段內容括起來,CSV默認認爲由""括起來的內容是一個欄位, 這時無論欄位內容裏有除"以外字符的任何字符均可以按原來形式引用。
spa

例如
"
; :k,j",email,是一行的內容,
"
;:k,j" 是一個單元格里的。
""
括起來的欄位內容裏CSV默認的換行符也不要緊。這樣輸出數據就很方便了。注意"是要加轉義字符命令行

eg,code

$content = "\"".$result_name."\",\"".$result_employer."\",\"".$result_specialism."\",\"".$rank[0]."\",";orm

echo $content;htm


惟一須要注意的 就是若字段內容裏含有"怎麼辦。這時只需將"替換成兩個連續的英文雙引號("")便可CSV會將字段裏的兩個雙引號""顯示成一個。blog

eg,
ci

$result_specialism = str_replace("\"","\"\"",$datamap['specialism']->content());

get

若是須要使用網頁導出數據的形式,須要寫header了
以PHP爲例:
首先作一個頁面,是被下載的CSV文件頁 saveCSV.php
<?php
//指明此文件類型,頁面類型
header("Content-Disposition: attachment; filename=".$filename.".csv");
header(''Content-Type:text/csv'');

/*

處理數據輸出

*/
?>
直接點擊到一個php頁面就能下載了
form裏用一 個<input type='button' value='導出CSV' onclick='saveCSV()'/>,saveCSV()是一個JS方法,將form的action指向saveCSV.php

http://www.cnblogs.com/chyong168/archive/2012/03/22/2411002.html

相關文章
相關標籤/搜索