jQuery Ajax PHP and CSV



我没有在特定情况下进行CSV导出的经验,如果有人能指出我正确的方向,那就太好了。需要将数组导出为 CSV,但问题是 Array 的文本可能有多个逗号,并且在导出过程中它会用逗号拆分文本并在单独的列中添加到 CSV。

这是我到目前为止对Ajax(我在互联网上某处找到的CSV生成代码(所获得的:

$('#export-csv').on('click', function(){
alert('export');
var postId = 551;
//call database and get data
$.ajax({
url:ajax_object.ajax_url,
type: 'POST',
dataType: 'json',
data: {
'action': 'export_csv',
'posts': postId,
},
success:function(data) {
output.html(data);
console.log(data);
download_csv(data);
},
error: function(errorThrown){
}
});
return false;
});
function download_csv(data) {
var csv = 'Name,Titlen';
data.forEach(function(row) {
csv += row.join(',');
csv += "n";
});
console.log(csv);
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
hiddenElement.target = '_blank';
hiddenElement.download = 'people.csv';
hiddenElement.click();
}

我从 PHP 获得以下格式的数组:

["risk_communicate_consult", "Lorem ipsum dolor sit amet, consectetuer adipiscin…r ridiculus mus. Donec quam felis, ultricies nec,"]
["risk_monitoring_review", "Lorem ipsum dolor sit amet, consectetuer adipiscin…r ridiculus mus. Donec quam felis, ultricies nec,"]

将其导出为 CSV 后,它会在每次出现","时拆分数组,并在 CSV 中将这些片段添加到单独的列中。

由于列值可能包含逗号,因此需要使用字段标识符。

通常,这"环绕在每个列值周围。列值中的任何双引号字符都应使用两个双引号进行转义

试试这样的事情...

const data = [
["risk_communicate_consult", "Lorem ipsum dolor sit amet, consectetuer adipiscin…r ridiculus mus. Donec quam felis, ultricies nec,"],
["risk_monitoring_review", "Lorem ipsum dolor sit amet, consectetuer adipiscin…r ridiculus mus. Donec quam felis, ultricies nec,"] 
]
const csv = ['Name,Title'].concat(data.map(row => {
return row.map(col => `"${col.replace(/"/g, '""')}"`).join(',')
})).join('n')
console.info(csv)

最新更新