作者:惯性hold不住 | 来源:互联网 | 2022-12-09 18:46
我是角度初学者,我正在研究Angular 5,Node v8.11.3.
我想实现一个接收参数数据和头文件的通用函数.并输出一个csv文件.
我创建了一个名为'FactureComponent'的组件然后我生成了一个名为'DataService'的服务然后我创建了一个getFactures函数,它从模拟中检索我的项目列表,它运行得很好.
import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';
import { FACTURES } from '../mock.factures';
@Component({
selector: 'app-facture',
templateUrl: './facture.component.html',
styleUrls: ['./facture.component.scss']
})
export class FactureComponent implements OnInit {
factures = [];
columns = ["Id","Reference","Quantite","Prix Unitaire"];
btnText: String = "Export CSV";
constructor(private _data: DataService) { }
ngOnInit() {
this.getFactures();
}
getFactures(){
this.factures=this._data.getFactures();
}
generateCSV(){
console.log("generate");
}
}
你会发现在视图下方
{{col}}
{{facture.id}}
{{facture.ref}}
{{facture.quantite}}
{{facture.prixUnitaire}}
所以我想实现一个函数,将我在视图上显示的数据转换为csv文件.
1> Braden Brown..: 更新:这是稍微好一点的方法:
在项目目录中打开命令提示符.
键入'npm install --save file-saver'安装文件保护程序
从'file-saver/FileSaver'导入{saveAs}; 进入你的.ts文件.
这是基于新导入的更新代码.
.
downloadFile(data: any) {
const replacer = (key, value) => value === null ? '' : value; // specify how you want to handle null values here
const header = Object.keys(data[0]);
let csv = data.map(row => header.map(fieldName => JSON.stringify(row[fieldName], replacer)).join(','));
csv.unshift(header.join(','));
let csvArray = csv.join('\r\n');
var blob = new Blob([csvArray], {type: 'text/csv' })
saveAs(blob, "myFile.csv");
}
归功于将对象转换为CSV的答案.
以下是使用方法:
downloadFile(data: any) {
const replacer = (key, value) => value === null ? '' : value; // specify how you want to handle null values here
const header = Object.keys(data[0]);
let csv = data.map(row => header.map(fieldName => JSON.stringify(row[fieldName], replacer)).join(','));
csv.unshift(header.join(','));
let csvArray = csv.join('\r\n');
var a = document.createElement('a');
var blob = new Blob([csvArray], {type: 'text/csv' }),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = "myFile.csv";
a.click();
window.URL.revokeObjectURL(url);
a.remove();
}
如果我找到了一个更好的方法,我将在后面添加.
`npm install @ types / file-saver --save-dev`
对于* .ts文件,添加npm install`@ types / file-saver --save-dev`