从 node.js 中的二进制数据创建 XLS 文件

Crating XLS file from binary data in node.js

我收到了二进制数据作为来自 http 请求的响应。

在 C# 中,我将数据转换为 byteArray,然后将 byteArray 写入文件,创建一个可读的 xls 文件。

C#代码:

 HttpResponseMessage httpResponseMessage = _httpClient.GetAsync(endPoint).Result;
 var httpResponseByteArray = httpResponseMessage.Content.ReadAsByteArrayAsync().Result;
 File.WriteAllBytes("plateList.xls", httpResponseByteArray);

我正在寻找一种在节点 js 中实现相同功能的方法。

到目前为止,我已经尝试过这些方法,但每种方法都创建了一个不可读的文件:

 const Excel = require('exceljs');

第一次尝试 - node.js

 var dataBinary = response.data;
 var workbook = new Excel.Workbook(dataBinary);
 await workbook.xlsx.writeFile("Test.xls")
         .then(function (err) {
            if (err) throw err;
            console.log('\x1b[32m%s\x1b[0m', "Create excel file successfully");
          });

第二次尝试 - node.js

 var bufferData = Buffer.from(response.data);
 var workbook = new Excel.Workbook(dataBinary);
 await workbook.xlsx.writeFile("Test.xls")
         .then(function (err) {
            if (err) throw err;
            console.log('\x1b[32m%s\x1b[0m', "Create excel file successfully");
          });

其他图书馆:

 const fs = require('fs');

第三次尝试 - node.js

 fs.writeFileSync("Test.xls", response.data);

第四次尝试 - node.js

 fs.writeFileSync("Test.xls",  Buffer.from(response.data));

还有更多但对我没有用

// response.data as a arrayBuffer
var data = response.data;
var arr = new Array();
for (var i = 0; i != data.length; ++i)
    arr[i] = String.fromCharCode(data[i]);
var bstr = arr.join("");

/* Call XLSX */
var workbook = XLSX.read(bstr, {
    type: "binary"
});

/* Create the file*/
XLSX.writeFile(workbook, "carNumbersAllowedFromLPRCamera.xls");

/* Get the work sheet name */
var first_sheet_name = workbook.SheetNames[0];

/* Get worksheet */
var worksheet = workbook.Sheets[first_sheet_name];

/* Convert it to json*/
let xlsData = XLSX.utils.sheet_to_json(worksheet, {
    raw: true
})