JavaScript CSV导出-在每个值后面添加选项卡



这只在Chrome中发生,并且在更新到70.0.3538.77版本后才开始发生。在更新之前,Chrome从未发生过这种情况。

我有一些JavaScript,当点击按钮将表导出到.csv文件时就会激活。

文件中的每个单元格在值后面都有一个制表符(或者换行符?(。有人知道这里可能发生了什么吗?

这是要导出的代码:

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");
}

一个简单的修复方法是修剪单元格的值:

row.push(cols[j].innerText.trim());

trim()从值中删除所有的前导行或尾随行结尾、制表符、空格等。

您可能还想考虑用引号限定文本,以防止单元格值中出现逗号问题:

row.push('"' + cols[j].innerText.trim() + '"');

肯定有更复杂的情况(如果你的值现在包含报价怎么办?(,所以你可能需要在这个基础上随着时间的推移输出一个合适的CSV文件。

最新更新