这仅在Chrome中发生,并且仅在更新到版本70.0.3538.77之后才开始发生。在更新之前,Chrome从未发生过这种情况。
我有一些单击按钮将表导出到.csv文件时会激活的JavaScript。
文件中的每个单元格在值之后都有一个制表符(或者可能是换行符?)。有人知道这里会发生什么吗?
以下是要导出的代码:
function downloadCSV(csv, filename) {
var csvFile;
var downloadLink;
// CSV file
csvFile = new Blob([csv], {type: "text/csv"});
// Download link
downloadLink = document.createElement("a");
// File name
downloadLink.download = filename;
// Create a link to the file
downloadLink.href = window.URL.createObjectURL(csvFile);
// Hide download link
downloadLink.style.display = "none";
// Add the link to DOM
document.body.appendChild(downloadLink);
// Click download link
downloadLink.click();
}
function exportTableToCSV(filename) {
var csv = [];
var rows = document.querySelectorAll("table tbody tr,table thead tr");
for (var i = 0; i < rows.length; i++) {
var row = [], cols = rows[i].querySelectorAll("td,th");
for (var j = 0; j < cols.length; j++)
row.push(cols[j].innerText);
csv.push(row.join(","));
}
// Download CSV file
downloadCSV(csv.join("\n"), filename+(new Date().getTime())+".csv");
}
答案 0 :(得分:1)
一个简单的解决方法是调整单元格的值:
row.push(cols[j].innerText.trim());
trim()
从值中删除所有开头或结尾的行尾,制表符,空格等。
您可能还想考虑用引号对文本进行限定,以防止单元格值中出现逗号问题:
row.push('"' + cols[j].innerText.trim() + '"');
肯定会有更复杂的情况(如果您的值现在包含引号怎么办?),因此您可能需要随着时间的推移而继续发展,以输出适当的CSV文件。