javascript - 如何跨浏览器一致地导出 csv 数据?
问题描述
我有一组要导出为 csv 文件的时间表数据。我目前的实现在 Chrome 中效果很好,但在 Firefox 或 Safari 中效果不佳(我还没有测试过其他浏览器)。
这是我正在使用的示例
rows = [
["Client", "Project", "User", "Duration (mins)", "Description", "Duration (hh:mm)"],
["foo", "foo_project", "foo bar", 30, "I did some stuff here", "0:30"],
["foo", "foo_project", "foo bar", 180, "And some more stuff during this one", "2:00"],
["bar", "bar_project", "foo bar", 9, "Only worked for nine minutes here", "0:09"]
]
data = "data:text/csv;charset=utf-8,"
joinedRows = rows.map(row => row.join(','))
data = data + joinedRows.join("\n")
link = document.createElement("a")
link.setAttribute('href', data)
link.click()
在 Chrome 中运行此代码段将为您提供格式正确的 csv 文件,但在 Firefox 中,这将是一行。
我创造data
的方式是正确的吗?
let el = document.getElementById('button')
el.addEventListener('click', () => {
rows = [
["Client", "Project", "User", "Duration (mins)", "Description", "Duration (hh:mm)"],
["foo", "foo_project", "foo bar", 30, "I did some stuff here", "0:30"],
["foo", "foo_project", "foo bar", 180, "And some more stuff during this one", "2:00"],
["bar", "bar_project", "foo bar", 9, "Only worked for nine minutes here", "0:09"]
]
data = "data:text/csv;charset=utf-8,"
joinedRows = rows.map(row => row.join(','))
data = data + joinedRows.join("\n")
link = document.createElement("a")
link.setAttribute('href', data)
link.click()
})
<button id="button">Click to download</button>
解决方案
推荐阅读
- c# - 选择最小日期值并计算日期值?
- python - 如何每 x 小时在 bash 脚本中重新启动 python 脚本?
- angular - Angular 材料在 Angular 版本 9 中不起作用
- vue.js - 如何在 Buefy 轮播组件中设置 itemWidth?
- java - 如何处理 Android 运行时权限中的“不再询问”复选框?
- reactjs - 如何在传递的节点元素内传播组件道具?
- python - 在 matplotlib 的子图下方放置一个滑块
- java - 如何使用 Eclipse JDT 扩展基类并实现接口
- javascript - 单击另一个时关闭下拉菜单
- python - 如何使用 Python 将 Ansible std_outlines 输出 JSON 插入 MongoDB