js保存数据为csv格式并导出

这篇文章的来由主要是为了实现在页面上加个按钮,获取数据后把这部分数据下载到本地,且格式要是csv的。
就直接上代码吧,具体逻辑参照代码注释。

// 定义必须参数并赋予测试数据
let data = [ // 真实数据需要与此测试数据格式保持一致。
	{name: '张三', url: 'https://www.baidu.com'},
	{name: 'zhangsan', url: 'https://www.baidu.com'},
	{name: 'zhangsan', url: 'https://www.baidu.com'},
	{name: 'zhangsan', url: 'https://www.baidu.com'}
]
let header= {name: '张三', url: '路径'}  // 表头

//数据处理, 这一部分可以封装为函数
data.unshift(header)  // 添加表头
// 处理数据为csv的格式
let csvString = ""
data.map(item => {
	Object.keys(header).map(key => {
		let value = item[key]
		csvString += value+','
	})
	csvString += '\r\n'
})
// 保存为csv文件并添加下载按钮
csvString = "data:application/csv," + encodeURIComponent(csvString);
let btn = document.createElement('a');
btn.setAttribute("href", csvString);
btn.setAttribute("download", "data.csv");
btn.innerText = '下载'
// 定义一个修改元素样式的函数
function setStyle(dom, styles={}){
	Object.keys(styles).map(key => {
		dom.style[key] = styles[key]
	})
	return dom
}
// 设置按钮的样式
btn = setStyle(btn, {
	'position': 'fixed',
	'top': '10px',
	'left': '10px',
	'zIndex': '9999999999',
	'backgroundColor': 'yellow' // 注意的是,样式名不能有下划线,要合并在一起改为首字母大写列如:  background-color  =>  backgroundColor
})
document.body.appendChild(btn)

点击这个a标签后,就会下载data数据为一个csv文件到本地了。

@快乐是一切

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值