2017-02-10 107 views
0

我正在使用jquery進行CSV導出。在jquery中csv導出之前添加一個特殊字符

我的數值中包含特殊字符。另外我需要使用分隔符作爲分號。

我的代碼是:

var array= []; 
array.push("Item;Name;Value"); 
array.push("1;Test,1;Test § 17"); 
array.push("2;Test2;Test § 18"); 

var csvAudit = []; 
for (var i = 0; i < array.length; i++) { 
    csvAudit.push(array[i]); 
} 
var csvExport = csvAudit.join('\n'); 

var csvFileName = "test.csv"; 
var contentType = 'text/csv;charset=utf-16'; 
csvExport = "\ufeff" + 'sep=;\r\n' + csvExport; 
var csvFile = new Blob([csvExport], { 
     type: contentType 
}); 
var a = document.createElement('a'); 
a.download = csvFileName; 
a.href = URL.createObjectURL(csvFile); 
a.textContent = 'Download CSV'; 
a.dataset.downloadurl = [contentType, a.download, a.href].join(':'); 
a.click(); 

當我下載使用Chrome瀏覽器的CSV然後,在我的Excel文件我看到: 測試§17,而不是測試§17

如果我刪除'sep =; \ r \ n'然後特​​殊字符被轉義,但分隔符用作逗號,並以錯誤的方式顯示數據,即測試,1顯示在單獨的單元格中,而不是一個。

是否有任何可能的解決方案來解決這個問題?

+0

看看這個:http://stackoverflow.com/questions/19492846/javascript-to-csv-export-encoding-issue – Mazz

+0

@Mazz我看着它,但沒有解決方案爲我工作,因爲我使用分隔符作爲分號。如果我刪除了分隔符,則不會附加特殊字符,但是逗號會用作默認分隔符,並且它會錯誤地顯示我的數據。 – ajain

回答

1

最後我能夠在雙引號在數組引用的值來解決問題,並刪除分號分隔,並用逗號分隔符來代替。

正確的代碼是: -

var array= []; 
array.push(""Item","Name","Value""); 
array.push(""1","Test,1","Test § 17""); 
array.push(""2","Test2,"Test § 18""); 

var csvAudit = []; 
for (var i = 0; i < array.length; i++) { 
    csvAudit.push(array[i]); 
} 
var csvExport = csvAudit.join('\n'); 

var csvFileName = "test.csv"; 
var contentType = 'text/csv'; 
csvExport = "\ufeff" + csvExport; 
var csvFile = new Blob([csvExport], { 
     type: contentType 
}); 
var a = document.createElement('a'); 
a.download = csvFileName; 
a.href = URL.createObjectURL(csvFile); 
a.textContent = 'Download CSV'; 
a.dataset.downloadurl = [contentType, a.download, a.href].join(':'); 
a.click(); 

特殊字符的被追加刪除 「\ ufeff」