我正在使用angular ts,并尝试在本地保存csv文件,而不是下载它,有人可以帮助我吗,我不知道如何。 首先,我将内容保存在一个数组中,清理它,然后尝试在本地保存它(最好在aseets文件夹中,但是我认为它是只读的,对吗?)。我有货了。
这是我的代码:
exportToCsv(filename: string, rows: object[]) {
if (!rows || !rows.length) {
return;
}
const separator = ',';
const keys = Object.keys(rows[0]);
const csvContent =
keys.join(separator) +
'\n' +
rows.map(row => {
return keys.map(k => {
let cell = row[k] === null || row[k] === undefined ? '' : row[k];
cell = cell instanceof Date
? cell.toLocaleString()
: cell.toString().replace(/"/g, '""');
if (cell.search(/("|,|\n)/g) >= 0) {
cell = `"${cell}"`;
}
return cell;
}).join(separator);
}).join('\n');
// not working
/* //if (this.plt.is('cordova'))
this.file.writeFile('.\\src\\assets', filename, csvContent, {replace: true}) */
// download
/* const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, filename);
} else {
const link = document.createElement('a');
if (link.download !== undefined) {
// Browsers that support HTML5 download attribute
const url = URL.createObjectURL(blob);
link.setAttribute('href', url);
link.setAttribute('download', filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
} */
}
答案 0 :(得分:1)
您需要后端服务才能完成此任务。 Angular从ts文件构建javascript。由于存在安全风险,浏览器中的Java语言无法直接修改计算机上的数据。浏览器可以处理您的前端站点,如盒子。