纯前端实现后端给数据进行文件导出——angular里面的使用
interface dataList {
cmd_cnt: number;
risk_name: string;
user_cnt: number;
risk_type:string;
}
listOfData: dataList[] = [ ];
dataObj:any = {
title:['风险名称','风险事件','涉及用户数','涉及操作次数'], //数据的每一列
jsonKey:['risk_type', 'risk_name','user_cnt','cmd_cnt'], //数据的标题对应的键
data: this.listOfData, //具体的数据
fileName: "数据汇总" //数据名称
};
点击导出文件
exprotCSV(){
this.dataObj.data = this.listOfData
this.exportCvs(this.dataObj) //调用具体的方法处理数据
}
//处理导出文件的函数
exportCvs(dataObj:any) {
var title = dataObj.title;
var jsonKey = dataObj.jsonKey;
var data = dataObj.data;
var str = [];
str.push(dataObj.title.join(",") + "\n");
for (var i = 0; i < data.length; i++) {
var temp = [];
for (var j = 0; j < jsonKey.length; j++) {
temp.push(data[i][jsonKey[j]]);
}
str.push(temp.join(",") + "\n");
}
var uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str.join("")); //text/csv表示文件类型 ,生成一个地址
var downloadLink = document.createElement("a"); //创建一个a标签
downloadLink.href = uri; //给 a标签加入href
downloadLink.download = new Date().toISOString().substring(0, 10) + "-" + dataObj.fileName + ".csv"; //文件名称
document.body.appendChild(downloadLink); //挂载到文件里面
downloadLink.click(); //点击下载
document.body.removeChild(downloadLink); //删除a标签
};
最新文章
- win10下的使用
- iOS自动处理键盘事件的第三方库:IQKeyboardManager
- 【openwrt】再设置
- 一种c#深拷贝方式完胜java深拷贝(实现上的对比)
- MIUI是小米的核心竞争力
- 初识Java--线程同步(2)
- Mysql 计算时间间隔函数
- datanode启动后,在web50070port发现不到datanode节点(能力工场)
- (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
- Swift ->; RunTime(动态性) 问题 浅析
- 手淘的flexible.js解决手机适配问题
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
- Python模块time、datetime
- MQ &; RPC 消息队列与RPC的区别与使用场景
- Kettle 部署
- iOS - 记住用户登录状态保存用户名密码
- ssh 常用命令
- Android仿华为天气绘制刻度盘
- 数据库管理系统的ACID特性
- sql查询job