在jquery中csv导出之前添加一个特殊字符
问题描述:
我正在使用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显示在单独的单元格中,而不是一个。
是否有任何可能的解决方案来解决这个问题?
答
最后我能够在双引号在数组引用的值来解决问题,并删除分号分隔,并用逗号分隔符来代替。
正确的代码是: -
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”
看看这个:http://stackoverflow.com/questions/19492846/javascript-to-csv-export-encoding-issue – Mazz
@Mazz我看着它,但没有解决方案为我工作,因为我使用分隔符作为分号。如果我删除了分隔符,则不会附加特殊字符,但是逗号会用作默认分隔符,并且它会错误地显示我的数据。 – ajain