私はnode.jsパッケージ 'xlsx'を使用してExcelファイルを読み込んでいます。ファイルシステムからファイルを同期的に読み取ることはうまくいきますが、ストリーミングはややこしいことです。 (ファイルはリモートから配信され、ストリームとしてしか受信できません)ローカルストリームファイルでも同じ問題が発生するため、簡単に再生できます。ノード:Excelファイルをストリームし、バッファを 'xslx'ライブラリに渡そうとしています
私はここの例を踏襲しています:https://www.npmjs.com/package/xlsxしかし、アプローチによっては「データの終わりに達しました」または「サポートされていないファイル」を取得します。
const XLSX = require('xlsx');
const fs = require('fs');
const stream = fs.createReadStream('sample.xlsx');
// This function returns Error: Unsupported file 48
documentedExample = function(){
var arr = new Array();
stream.on('data', function(arraybuffer){
var data = new Uint8Array(arraybuffer);
for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
});
stream.on('end', function(){
var bstr = arr.join("");
var workbook = XLSX.read(bstr, {type:"binary"});
});
}
// This function returns Error: End of data reached (data length = 75589, asked index = 77632). Corrupted zip ?
alternateExample = function(){
var bufferArray = [];
stream.on('data', function(thisChunk){
bufferArray.push(thisChunk);
});
stream.on('end', function(){
var excelDataBuffer = bufferArray.join("");
excelDataBuffer = excelDataBuffer.toString();
var workbook = XLSX.read(excelDataBuffer, {type:"binary"});
});
}
ローカルで使用するためにxlsxバイナリを再構成する正しい方法は何でしょうか?