首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从stdin解析xlsx-js

从stdin解析xlsx-js
EN

Stack Overflow用户
提问于 2015-11-25 07:01:20
回答 1查看 753关注 0票数 2

我试图使用xlsx (v0.8.0)解析一个文件,该文件是通过stdin管道传输的。

以下代码:

代码语言:javascript
复制
const data = fs.readFileSync('/dev/stdin').toString();
wb = xlsx.read(data, {type: 'binary'});      

当我将文件(在mac上)作为cat foo.xlsx \节点test.js传输时失败:

代码语言:javascript
复制
>  throw new Error("Corrupted zip : can't find end of central directo                     ^ Error: Corrupted zip : can't find end of central directory   at Object.ZipEntries.readEndOfCentral   (/Volumes/Macintosh\_HD/Users/shauncutts/src/crane-parse-monthly/node\_modules/jszip/lib/zipEntries.js:135:19)   at Object.ZipEntries.load   (/Volumes/Macintosh\_HD/Users/shauncutts/src/crane-parse-monthly/node\_modules/jszip/lib/zipEntries.js:197:14)   at Object.ZipEntries   (/Volumes/Macintosh\_HD/Users/shauncutts/src/crane-parse-monthly/node\_modules/jszip/lib/zipEntries.js:21:14)   at Object.module.exports [as load]   (/Volumes/Macintosh\_HD/Users/shauncutts/src/crane-parse-monthly/node\_modules/jszip/lib/load.js:11:18)   at Object.JSZip   (/Volumes/Macintosh\_HD/Users/shauncutts/src/crane-parse-monthly/node\_modules/jszip/lib/index.js:39:14)   at read\_zip   (/Volumes/Macintosh\_HD/Users/shauncutts/src/crane-parse-monthly/node\_modules/xlsx/xlsx.js:11375:38)   at Object.readSync [as read]   (/Volumes/Macintosh\_HD/Users/shauncutts/src/crane-parse-monthly/node\_modules/xlsx/xlsx.js:11396:11)
>  

However, I can read the same file via:

```javascript

wb = xlsx.readFile(fn);

代码语言:javascript
复制

没有问题。我应该如何修改我的代码以便能够读取管道文件?

EN

回答 1

Stack Overflow用户

发布于 2015-11-25 22:04:42

再次感谢@LazarevAlexandr ..。事实上,问题在于readFile和readFileSync在stdin上有问题。以下代码起作用:

代码语言:javascript
复制
  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的测试中尝试将二进制选项传递给readFileSync,结果仍然停留在65535)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33910324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档