You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中通过HTTPS获取XLSX文件并直接读取数据的实现方案

Node.js 直接读取API返回的XLSX文件数据

原始代码

const https = require('https');
var postData = JSON.stringify({
    'msg' : 'Hello World!'
});
let url;
url = "someurl2228.com";// 占位符,已移除真实地址
var options = {
  hostname: url,
  path: '/file/download/b8d61eff5314ac1ac982e5dbb9630f83',
  method: 'GET',
  headers: {myheader:"somedata"}
};
var req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);
  res.on('data', (d) => {
    process.stdout.write(d);
  });
  res.on('end',()=>{
    console.log('********************END********');
  });
});
req.on('error', (e) => {
  console.error(e);
});
req.write(postData);
req.end();

注:上述代码中的URL为占位符,已移除真实地址。

问题描述

我在Node.js中使用https模块调用外部REST API,该API会返回一个XLSX文件。希望无需保存文件就能直接读取其中的数据,用于后续业务操作。

用Postman调用该API时,点击「Send」按钮会在响应面板中看到Unicode字符;点击「Send and Download」按钮则可下载保存XLSX文件。目前我的代码已能获取到类似Postman「Send」返回的Unicode内容,但不知后续如何处理以读取XLSX文件中的数据。

解决方案

要直接读取XLSX文件数据,需先收集响应的二进制数据,再用专用库解析,步骤如下:

1. 安装XLSX解析库

使用SheetJS的xlsx包解析二进制数据,执行安装命令:

npm install xlsx

2. 修改代码收集并解析二进制数据

XLSX是二进制格式,不能直接用字符串处理,需要把响应的data片段(Buffer类型)收集起来,合并成完整的Buffer后再解析。另外注意:你的代码用GET请求却写入了postData,GET请求通常不需要请求体,建议根据API实际要求调整,若API确实需要则保留。

修改后的代码:

const https = require('https');
const XLSX = require('xlsx');

// 若API不需要POST数据,可删除以下两行
const postData = JSON.stringify({ 'msg': 'Hello World!' });
const url = "someurl2228.com"; // 替换为真实地址

const options = {
  hostname: url,
  path: '/file/download/b8d61eff5314ac1ac982e5dbb9630f83',
  method: 'GET',
  headers: { myheader: "somedata" }
};

const req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  // 收集响应的二进制数据
  const chunks = [];
  res.on('data', (chunk) => {
    chunks.push(chunk);
  });

  res.on('end', () => {
    // 合并所有chunk为完整的Buffer
    const buffer = Buffer.concat(chunks);
    // 解析XLSX文件
    const workbook = XLSX.read(buffer, { type: 'buffer' });

    // 获取第一个工作表的数据(可根据实际表名调整)
    const firstSheetName = workbook.SheetNames[0];
    const worksheet = workbook.Sheets[firstSheetName];
    // 转换为JSON格式,方便业务处理
    const data = XLSX.utils.sheet_to_json(worksheet);

    console.log('解析出的Excel数据:', data);
    console.log('********************END********');
  });
});

req.on('error', (e) => {
  console.error(e);
});

// 若API不需要POST数据,可删除以下两行
req.write(postData);
req.end();

3. 后续业务处理

解析得到的data是JSON数组,每个元素对应Excel中的一行数据,可直接用于后续业务逻辑(如数据校验、入库等)。

内容的提问来源于stack exchange,提问作者Vishal Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:41:02