我在 javascript 中有一个方法,它返回一个以逗号分隔的长字符串,然后我需要使用该字符串创建一个 csv 文件,问题是当我有一个长字符串时,它什么也不做
这就是我创建文件的方式
let csvContent2 = csv2;
var encoding = "data:text/csv;charset=utf-8,%EF%BB%BF";
link2 = document.createElement("a");
link2.setAttribute("download", filename + "DOC.csv");
link2.setAttribute("href", encoding + encodeURIComponent(csvContent2));
当我尝试触发 link2.click()
并检查 csv 文件时,它什么也不做
最佳答案
使用URL.createObjectURL
,
function downloadAsCSV(longCSVString, fileName) {
const csvBlob = new Blob([longCSVString], {
type: 'text/csv;charset=utf-8;'
});
//for IE11 & Edge
if (navigator.msSaveBlob) {
navigator.msSaveBlob(csvBlob, fileName);
} else {
//for modern browsers
const link = document.createElement('a');
const url = window.URL.createObjectURL(csvBlob);
link.href = url;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
setTimeout(() => {
window.URL.revokeObjectURL(url);
});
}
}
// example
downloadAsCSV('YOUR_LONG_CSV_STRING', 'FILE_NAME_HERE');
关于Javascript 将长字符串编码为 csv 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779116/