xlsx-js从stdinparsing

我试图parsing一个文件使用xlsx-js(v0.8.0),这是通过标准inputpipe道。

以下代码:

const data = fs.readFileSync('/dev/stdin').toString(); wb = xlsx.read(data, {type: 'binary'}); 

当我pipe道文件(在Mac上)作为猫foo.xlsx |失败 节点test.js:

“`

抛出新的错误(“损坏的zip:找不到中央直接的结束^错误:损坏的zip:找不到中央目录的结尾在Object.ZipEntries.readEndOfCentral(/卷/ Macintosh_HD / Users / shauncutts / src / (/ Volumes / Macintosh_HD / Users / shauncutts / src / crane-parse-monthly / node_modules / jszip / lib / zipEntries)parsing每月/ node_modules / jszip / lib / zipEntries.js:135:19。 js:197:14)在Object.ZipEntries(/Volumes/Macintosh_HD/Users/shauncutts/src/crane-parse-monthly/node_modules/jszip/lib/zipEntries.js:21:14)Object.module.exports [as (/ Volumes / Macintosh_HD / Users / shauncutts / src / load / jquery / (/Volumes/Macintosh_HD/Users/shauncutts/src/crane-parse-monthly/node_modules/xlsx/xlsx.js:11375: 38)在Object.readSync [读取](/ Volumes / Macintosh_HD / Users / shauncutts / src / crane-parse-monthly / node_modules / XLSX / xlsx.js:11396:11)

不过,我可以通过以下方式阅读相同的文件:

 wb = xlsx.readFile(fn); 

没有问题。 我应该如何修改我的代码才能读取pipe道文件?

再次感谢@LazarevAlexandr …其实问题是readFile&readFileSync与标准input有问题 。 以下代码工作:

  let wb; const chunks = []; process.stdin .on("data", function(chunk) { chunks.push(chunk); }) .on("end", function() { const buffer = Buffer.concat(chunks); wb = xlsx.read(buffer, {binary: true}); // (call your favorite async continuation method here...) }); 

(NB – 尝试在@ mbostock的testing中将二进制选项传递给readFileSync,它们仍然停留在65535)。