Я пытаюсь проанализировать файл с помощью xlsx-js (v0.8.0), который передается через стандартный ввод.
Следующий код:
const data = fs.readFileSync('/dev/stdin').toString();
wb = xlsx.read(data, {type: 'binary'});
терпит неудачу, когда я передаю файл (на Mac) как cat foo.xlsx | узел test.js:
```
выбросить новую ошибку («Поврежден zip: не удается найти конец центрального каталога ^ Ошибка: Поврежден zip: не удается найти конец центрального каталога в Object.ZipEntries.readEndOfCentral (/Volumes/Macintosh_HD/Users/shauncutts/src/crane- parse-monthly/node_modules/jszip/lib/zipEntries.js:135:19) в Object.ZipEntries.load (/Volumes/Macintosh_HD/Users/shauncutts/src/crane-parse-monthly/node_modules/jszip/lib/zipEntries. 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 [как load] (/Volumes/Macintosh_HD/Users/shauncutts/src/crane-parse-monthly/node_modules/jszip/lib/load.js:11:18) в Object.JSZip (/Volumes/Macintosh_HD/Users/shauncutts/src/ Crane-parse-monthly/node_modules/jszip/lib/index.js:39:14) в read_zip (/Volumes/Macintosh_HD/Users/shauncutts/src/crane-parse-monthly/node_modules/xlsx/xlsx.js:11375: 38) в Object.readSync [как прочитано] (/Volumes/Macint osh_HD/Users/shauncutts/src/crane-parse-monthly/node_modules/xlsx/xlsx.js:11396:11)
Однако я могу прочитать тот же файл через:
wb = xlsx.readFile(fn);
Без проблем. Как мне изменить свой код, чтобы иметь возможность читать переданный файл?
fs.readFileSync('/dev/stdin').toString('binary');
? - person Alexandr Lazarev   schedule 25.11.2015toString('binary')
, ниtoString('ascii')
не сработали.... - person shaunc   schedule 26.11.2015fs.readFileSync('/dev/stdin')
: строка имеет длину 65536 против 1746435 при чтении в виде файла. -- возможно, это застревает на символе EOF где-то в середине двоичных данных? Или 65536 размер внутреннего буфера? Хм... есть предложения? - person shaunc   schedule 26.11.2015binary
в качестве параметра опцииreadFileSync
и не вызыватьtoString()
после нее. Как описано здесь: nodejs.org/api/fs.html#fs_fs_readfilesync_file_options - person Alexandr Lazarev   schedule 26.11.2015