Javascript 解析excel文件时,为什么';没关系吗?

Javascript 解析excel文件时,为什么';没关系吗?,javascript,node.js,excel,Javascript,Node.js,Excel,在nodejs中解析excel文件的最初尝试中,我尝试读取该文件,并假设它是UTF-8编码的: var fs = require('fs'); var excel = require('excel-stream'); fs.createReadStream(__dirname + relativePathToFile, 'utf8') .pipe(excel()) .on('data', console.log); 但这产生了一个错误: Error: j: erro

在nodejs中解析excel文件的最初尝试中,我尝试读取该文件,并假设它是
UTF-8
编码的:

  var fs = require('fs');
  var excel = require('excel-stream');
  fs.createReadStream(__dirname + relativePathToFile, 'utf8')
    .pipe(excel())
    .on('data', console.log);
但这产生了一个错误:

Error: j: error parsing /tmp/_1509140718263: Error: End of data reached (data length = 1910319, asked index = 1910332). Corrupted zip ?

    at /apps/node_modules/excel-stream/index.js:49:34
    at ConcatStream.<anonymous> (/apps/node_modules/concat-stream/index.js:36:43)
    at emitNone (events.js:91:20)
    at ConcatStream.emit (events.js:188:7)
    at finishMaybe (/apps/node_modules/readable-stream/lib/_stream_writable.js:511:14)
    at afterWrite (/apps/node_modules/readable-stream/lib/_stream_writable.js:393:3)
    at _combinedTickCallback (internal/process/next_tick.js:86:20)
    at process._tickCallback (internal/process/next_tick.js:104:9)
Error:j:Error-parsing/tmp/_1509140718263:Error:End-of-data-reacted(数据长度=1910319,请求索引=1910332)。拉链坏了?
at/apps/node_modules/excel stream/index.js:49:34
在ConcatStream。(/apps/node_modules/concat stream/index.js:36:43)
在emitNone(events.js:91:20)
在ConcatStream.emit(events.js:188:7)
在finishMaybe(/apps/node\u modules/readable stream/lib/\u stream\u writable.js:511:14)
在写后(/apps/node\u modules/readable stream/lib/\u stream\u writable.js:393:3)
at _combinedTickCallback(内部/流程/下一步_tick.js:86:20)
在进程中。_tick回调(内部/process/next_tick.js:104:9)
后来我忽略了编码:

fs.createReadStream(\uu dirname+relativePathToFile)

一切都很顺利

这种情况使我想到一个问题:

解析excel文件时,为什么编码不重要

默认数据是以拉丁文1还是二进制形式读入的

谁负责将可能以非拉丁语输入原始excel文件的数据正确解码


Excel
.xlsx
文件的格式是一个包含多个内部文件的zip归档文件(通常是XML,带有自己的编码等)。作为二进制文件,它们没有文本编码,并且在将它们作为流打开以传递到Excel解析库时,不需要提供文本编码。您得到的错误是底层库抱怨,在您强制将流解码为utf-8后,它无法将其解释为有效的zip存档

这并不重要,因为.xlsx文件不是文本文件,所以“编码”是不明智的。你的问题不清楚你为什么认为他们是。错误本身告诉您,在使用其他人的库时,您的excel阅读器实际上需要一个压缩流(即格式为压缩二进制文件),最好阅读他们的文档-excel流文档中没有提到文本encoding@pvg-请将您的评论添加为
答案
,以便我将其标记为正确的评论