从 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
})
我收到了二进制数据作为来自 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
})