Skip to content

Semi-streaming XLS(X) / ODS / QPW (and more) parser.

License

Notifications You must be signed in to change notification settings

vweevers/spreadsheet-stream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spreadsheet-stream

Semi-streaming XLS(X) / ODS / QPW (and more) parser.
"Semi" because these spreadsheet formats are not streamable so the whole thing is buffered in memory. Same as excel-stream but faster because there's no filesystem IO or child process.

npm status node Test Standard

Example

npm i spreadsheet-stream format-data
const sheet = require('spreadsheet-stream')
const format = require('format-data')
const fs = require('fs')

fs.createReadStream('example.xlsx')
  .pipe(sheet())
  .pipe(format('json'))
  .pipe(process.stdout)

NB. Although the underlying parser (xlsx) also supports non-binary formats like CSV, for those formats you're better off with truly streaming solutions like tabular-stream (to support both spreadsheets and CSV), csv-parser or similar. Those are not limited by memory. For a command-line interface, see tabular-cli.

API

sheet([options])

Returns a duplex stream of which the writable side takes a spreadsheet and the readable side yields row objects. Options:

  • maxSize (number, default 0): destroy stream when more than maxSize bytes have been written (i.e. reject big files)
  • sheetIndex (number, default 0): select a sheet
  • sheet (string, default none): select a sheet by its name. Takes precedence over sheetIndex.

Install

With npm do:

npm install spreadsheet-stream

License

MIT © 2019-present Vincent Weevers.