Javascript 解析excel文件时,为什么';没关系吗?
在nodejs中解析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
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-请将您的评论添加为答案
,以便我将其标记为正确的评论