html5页面如何利用JavaScript导出csv文件

html5页面如何利用JavaScript导出csv文件

需求:前端调用接口,然后对返回数据进行过滤、格式化,然后按表格内容拼接生成csv文件,让用户下载。

var sourceData = {
	head: [ '时间', '成交价格', '成交数量', '手续费', '成交金额', ],
    data: [
        {time: '2019-10-17 14:54:52', tradePrice: '30.0022.001.32 TWD', fee:'0 TWD', tradeAmount: '660.00',},
        {time: '2019-10-17 14:54:36', tradePrice: '30.0089.005.34 TWD', fee:'0 TWD', tradeAmount: '2,670.00',},
        {time: '2019-10-17 14:54:07', tradePrice: '21.00500.0021 TWD', fee:'0 TWD', tradeAmount: '10,500.00',},
    ]
}
// 格式化
const data = [sourceData.head.join(',')].concat(sourceData.data.map(item => {
    return [
        item.time,
        `"${item.tradePrice}"`,
        `"${item.fee}"`,
        `"${item.tradeAmount}"`,
    ].join(',')
}))
// 创建Blob对象 传入一个合适的MIME类型
const blob = new Blob(['\ufeff' + data.join('\n')], {type: 'text/csv,charset=UTF-8'}); // 参考链接 https://developer.mozilla.org/zh-CN/docs/Web/API/Blob
// 使用 Blob 创建一个指向类型化数组的URLconst 
csvUrl = URL.createObjectURL(blob); // 参考链接 https://developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL
let link = document.createElement('a'); 
link.download = `filename${new Date().getTime()}.csv`; //文件名字 
link.href = csvUrl;// 触发下载
link.click();

注意事项:

  1. 数据中存在 ‘,’ 逗号问题处理:将整个数据用双引号(英文格式)包裹起来,这样会显示成一个单元格。

  2. 拼接后的数据如何直接下载,不需要用户在操作:动态创建a标签,并调用点击事件

  3. 中文乱码解决方案:在数据前面加上字符串"\ufeff"即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值