Excel 从服务器到客户端的文件 | Javascript

Excel file from server to client | Javascript

我想做什么:我在服务器端有一个文件 'test_download.xlsx',我想将它发送到客户端,以便我可以在检索到的对象上应用 XLSX.read() .

所以我这样试了

服务器:

let filename = 'test_download.xlsx';
const buffer = fs.readFileSync(filename)
res.json(buffer);

客户:

file = await axios.get('/dataexplorer/test');
console.log(file);
console.log(XLSX.read(file.data, {type: "buffer"}));

第一条日志:

第二条日志:

问题是它与我的 excel 文件完全不匹配 sheets(我的文件有 3 个不同的 sheet 名称) 你知道问题出在哪里吗?

谢谢

在 server-side 上只需使用:

const filename = 'test_download.xlsx';
// make sure to include the name and the extension of the file in the path
const filepath = 'your/path/to/the/file/test_download.xlsx';
/** filename is optional: 
 * if you don't pass it, the name of the file in the filepath will be used
 * if you pass it the file at hte filepath will be downloaded with the name of `filename`
 */
res.download(filepath, filename);

这将 return 一个 blob 发送给客户端(确保包含正确的 headers 响应类型)然后您可以保存它或使用它:

file = await axios.get('/dataexplorer/test',{ responseType: "blob"});
const ab = await file.data.arrayBuffer();
XLSX.read(Buffer.from(ab),{type:"buffer"})