在jquery中的csv导出中的§之前附加一个特殊字符

时间:2017-02-10 13:41:49

标签: jquery excel 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 显示在单独的单元格而不是一个单元格中。

有没有解决方法可以解决这个问题?

1 个答案:

答案 0 :(得分: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”

删除了特殊字符