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


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

 

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

這時可以使用雙引號"來將每個字段內容括起來,CSV默認認為由""括起來的內容是一個欄位, 這時不管欄位內容里有除"之外字符的任何字符都可以按原來形式引用。

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

eg,

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

echo $content;


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

eg,

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

如果需要使用網頁導出數據的形式,需要寫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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM