mgcrea / node-xlsx

NodeJS excel file parser & builder
Other
2.93k stars 273 forks source link

f.slice is not a function #110

Closed lamualfa closed 5 years ago

lamualfa commented 5 years ago

I tried to read an excel file that doesn't have extension, and i get error below.I don't know if this library doesn't support reading excel files that don't have extensions. But certainly when I try to open the same file in LibreCalc, I don't get a problem.

TypeError: f.slice is not a function
    at firstbyte (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/node_modules/xlsx/xlsx.js:20226:38)
    at Object.readSync [as read] (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/node_modules/xlsx/xlsx.js:20308:14)
    at Object.parse (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/node_modules/node-xlsx/lib/index.js:31:86)
    at exports.post./ (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/controller/api/upload.js:11:39)
    at Layer.handle [as handle_request] (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/node_modules/express/lib/router/route.js:137:13)
    at /home/lod/Documents/Projects/NodeJS/d1-excel-reader/lib/upload/lib/filter.js:120:4
    at Layer.handle [as handle_request] (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/node_modules/express/lib/router/route.js:137:13)
    at IncomingForm.<anonymous> (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/lib/upload/lib/upload.js:188:6)
    at IncomingForm.emit (events.js:182:13)
    at IncomingForm._maybeEnd (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/lib/upload/node_modules/formidable/lib/incoming_form.js:557:8)
    at /home/lod/Documents/Projects/NodeJS/d1-excel-reader/lib/upload/node_modules/formidable/lib/incoming_form.js:238:12
    at WriteStream.<anonymous> (/home/lod/Documents/Projects/NodeJS/d1-excel-reader/lib/upload/node_modules/formidable/lib/file.js:79:5)
    at Object.onceWrapper (events.js:273:13)
    at WriteStream.emit (events.js:182:13)
crecreek commented 5 years ago

same question

TatiFKNavarro commented 5 years ago

If you are using multer to upload the file, you need to use

const sheet = XLSX.read(req.file.buffer);
eduwardo commented 1 year ago

Since we are talking about node-xlsx package, not SheetJS, you should use:

import xlsx from 'node-xlsx';

const sheet = xlsx.parse(req.file.buffer);