具有文件下载选项的应用程序前端(可以采用以下格式:xlsx、csv、dat)。 为此,我使用 fileSaver.js
.dat/.csv
格式一切正常,但 .xlsx
格式无效,文件已损坏。
我测试了以下格式的转换:
utf8
base64
二进制
这是我的做法:
// /* BACK */ //
// data is
fs.readFile(filePath, (err, data) {...})
// the api give this answer the important part is "filename" & "data"
{"status":"ok","context":"writing the intermediate file","target":"/temp/","fileName":"name.xlsx","data":{"type":"Buffer","data":[72,82,65,67,67,69,83,83,32,10]}}
// /* FRONT */ //
let json = JSON.stringify(data)
let buffer = Buffer.from(JSON.parse(json).data)
let read = buffer.toString('utf8')
let blob = new Blob([read])
FileSaver.saveAs(blob, fileName)
最佳答案
@哈多克 如果您想下载扩展名为 .csv 的文件,则需要传递文件类型,如
let blob = new Blob([csv], { type: 'application/vnd.ms-excel' });
代替
let blob = new Blob([read])
并且不要忘记发送带有扩展名 (test.csv) 的文件名。
对于 excel 文件,我使用了不同的插件 exceljs demo .
关于javascript - 如何将 blob 转换为 xlsx 或 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56682757/