我正在尝试在JS客户端应用程序上导出有效的csv。我有一个函数,通过在每个项目之间添加逗号以及在数组的每一行之间添加行终止符,将数组转换为csv字符串。我很肯定我的功能运行良好(至少与格式化有关)。但是,当给出超过160行时,它将停止追加。可能是什么问题?字符串可以有多长? CSV生成的客户端可以使用多长时间的限制?
我的CSV标头为:data:text/csv;charset=utf-8,
[编辑]我认为这实际上是浏览器设置的某种限制。不确定CSV文件的长度或字符串的长度。知道如何解决这个限制吗?
[编辑]代码:
const BASE_CSV_HEADER = 'data:text/csv;charset=utf-8'
const stringify = text => {
let retval
try {
retval = text.toString()
} catch(e) {
retval = text
}
return typeof retval === 'string' ? retval || ' '
}
const stripForCSV = (row) => {
let newRow = []
row.forEach((text) => {
text = stringify(text)
newRow.push(text.replace(/,/g, '.')) // to avoid comma clashes
})
return newRow
}
const arraysToCsv = (arrays) => {
let csv = ''
arrays.forEach(row => {
row = stripForCSV(row)
csv += row.join(',');
csv += "\n";
})
return csv
}
const getCSV (jsObject) => {
const arrays = convertJsObjectToArrayOfArrays(jsObject)
const csv = arraysToCsv(arrays)
return BASE_CSV_HEADER + csv // Removed encodeURI
}
[编辑]
解决了!
如此处所述:Export HTML table to csv in google chrome browser
我不得不将下载类型更改为Blob。