gpt4 book ai didi

Angular 5 : how to export data to csv file

转载 作者:太空狗 更新时间:2023-10-29 17:11:24 24 4
gpt4 key购买 nike

我是 Angular 的初学者,我正在研究 Angular 5,Node v8.11.3。

我想实现一个接受参数数据和 header 的通用函数。并作为输出 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");
}
}

你会在 View 下方找到

<form>
<input type="submit" [value]="btnText" (click)="generateCSV()"/>
</form>

<table>
<tr>
<th *ngFor="let col of columns">
{{col}}
</th>
</tr>
<tr *ngFor="let facture of factures">
<td>{{facture.id}}</td>
<td>{{facture.ref}}</td>
<td>{{facture.quantite}}</td>
<td>{{facture.prixUnitaire}}</td>
</tr>
</table>

所以我想实现一个功能,将我在 View 上显示的数据转换成csv文件。

最佳答案

更新:这是稍微好一点的方法:

  1. 在您的项目目录中打开命令提示符。
  2. 通过键入 npm install --save file-saver 安装文件保护程序
  3. import { saveAs } from 'file-saver'; 到您的 .ts 文件中。
  4. 这是基于新导入的更新代码。
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");
}

致谢 answer用于将对象转换为 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]);
const csv = data.map((row) =>
header
.map((fieldName) => JSON.stringify(row[fieldName], replacer))
.join(',')
);
csv.unshift(header.join(','));
const csvArray = csv.join('\r\n');

const a = document.createElement('a');
const blob = new Blob([csvArray], { type: 'text/csv' });
const url = window.URL.createObjectURL(blob);

a.href = url;
a.download = 'myFile.csv';
a.click();
window.URL.revokeObjectURL(url);
a.remove();
}

如果我找到更好的方法,我会稍后补充。

关于 Angular 5 : how to export data to csv file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com