A GET API (google sheets API) returns an excel sheet in windows 1252 编码格式.如何使用 nodeJS 下载 sheet 作为 excel?
A GET API (google sheets API) returns an excel sheet in windows 1252 encoding format. How can I download the sheet as excel using nodeJS?
这是API给出的回复
这是代码片段。
axios.get(api , { headers: {"Authorization" : `Bearer ${token}` , "Content-Type":"application/json" , "Accept" : "*/*", "Accept-Encoding" : "gzip, deflate, br"} })
.then(res => {
try {
let fileString = iconv.decode(res.data, 'win1252');
fs.writeFile('NodeReport.xlsx' , fileString , (error) => {
console.log(error);
});
}
catch (err){
console.log(err);
}
}
);
因此,如果我在浏览器中点击 API,它会下载 excel 文件,如果我将 Postman 的响应保存为文件,它也会下载 excel 文件。但是我想从我的 nodeJS 代码中点击 API 然后将文件保存为 Excel file 。我试过使用 fs.writeFile 但它没有打开保存的文件,它说格式错误或内容已损坏。谁能告诉我如何从 API 响应中保存此文件?
在你的脚本中,作为修改,下面的修改怎么样?
修改后的脚本:
axios
.get(api, {
headers: { Authorization: `Bearer ${token}` },
responseType: "arraybuffer",
})
.then((res) => {
try {
fs.writeFile("NodeReport.xlsx", res.data, (error) => {
console.log(error);
});
} catch (err) {
console.log(err);
}
});
在这个修改中,数据被检索为数组缓冲区并将数据保存为XLSX文件。
如果导出文件损坏,请将fs.writeFile("NodeReport.xlsx", res.data, (error) => {
修改为fs.writeFile("NodeReport.xlsx", new Buffer.from(res.data), (error) => {
再测试
参考:
这是API给出的回复
这是代码片段。
axios.get(api , { headers: {"Authorization" : `Bearer ${token}` , "Content-Type":"application/json" , "Accept" : "*/*", "Accept-Encoding" : "gzip, deflate, br"} })
.then(res => {
try {
let fileString = iconv.decode(res.data, 'win1252');
fs.writeFile('NodeReport.xlsx' , fileString , (error) => {
console.log(error);
});
}
catch (err){
console.log(err);
}
}
);
因此,如果我在浏览器中点击 API,它会下载 excel 文件,如果我将 Postman 的响应保存为文件,它也会下载 excel 文件。但是我想从我的 nodeJS 代码中点击 API 然后将文件保存为 Excel file 。我试过使用 fs.writeFile 但它没有打开保存的文件,它说格式错误或内容已损坏。谁能告诉我如何从 API 响应中保存此文件?
在你的脚本中,作为修改,下面的修改怎么样?
修改后的脚本:
axios
.get(api, {
headers: { Authorization: `Bearer ${token}` },
responseType: "arraybuffer",
})
.then((res) => {
try {
fs.writeFile("NodeReport.xlsx", res.data, (error) => {
console.log(error);
});
} catch (err) {
console.log(err);
}
});
在这个修改中,数据被检索为数组缓冲区并将数据保存为XLSX文件。
如果导出文件损坏,请将
fs.writeFile("NodeReport.xlsx", res.data, (error) => {
修改为fs.writeFile("NodeReport.xlsx", new Buffer.from(res.data), (error) => {
再测试