npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@watershedclimate/xlstream

v2.5.9

Published

Turns XLSX into a readable stream.

Downloads

2,284

Readme

Build Status codecov npm

xlstream

Memory-efficiently turns XLSX file into a transform stream with all its benefits.

  • Stream is pausable.
  • Emits all default events (data, end, etc.)
  • Returns header, raw and formatted row data, as well as totalSheetSize and processedSheetSize (in bytes) in just one data event.
  • Maintains desirable behavior of merged cells.
  • Supports files created by OpenXML.
  • Supports standard, Excel and custom number formats.

Installation

npm install xlstream

Example

source.xlsx contents:

| A | B | | ----- | --- | | hello | 123 |

Where 123 is a 123.123 number formatted to be rounded to integer.

Script:

const { getXlsxStream } = require("xlstream");

(async () => {
  const stream = await getXlsxStream({
    filePath: "./source.xlsx",
    sheet: 0,
  });
  stream.on("data", (x) => console.log(x));
})();

Result:

{
    "raw": {
        "obj": { "A": "hello", "B": 123.123 },
        "arr": [ "hello", 123.123 ]
    },
    "formatted": {
        "obj": { "A": "hello", "B": 123 },
        "arr": [ "hello", 123 ]
    },
    "header": [],
    "totalSheetSize": 1110,
    "processedSheetSize": 1110
}

getXlsxStream

Returns transform stream of the sheet.

Options

| option | type | description | | --------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | filePath | string | Path to the XLSX file | | sheet | string or number | If string is passed, finds sheet by it's name. If number, finds sheet by it's index. | | withHeader | boolean or number | If true, column names will be taken from the first sheet row. If duplicated header name is found, column name will be prepended with column letter to maintain uniqueness. 0-based row location can be passed to this option if header is not located on the first row. | | ignoreEmpty | boolean | If true, empty rows won't be emitted. | | fillMergedCells | boolean | If true, merged cells will have the same value (by default, only the first cell of merged cells is filled with value). Warning! Enabling this feature may increase streaming time because file must be processed to detect merged cells before actual stream. | | numberFormat | standard or excel or object | By default standard format is used. Excel implementation of number formatting differs from standard (can be read here) so excel option can be used to match this difference. If custom formatting is needed, a dictionary object can be passed to this option. | | encoding | string | Sets file encoding. |

getXlsxStreams

Async generator which yields transform streams of the sheets.

Options

| Option | Type | Description | | -------- | ---------------------- | ------------------------------------------- | | filePath | string | Path to the XLSX file | | sheets | array of sheet objects | Options of sheet object can be found below. | | encoding | string | Sets file encoding. |

Sheet object

| option | type | description | | --------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | id | string or number | If string is passed, finds sheet by it's name. If number, finds sheet by it's index. | | withHeader | boolean | If true, column names will be taken from the first sheet row. If duplicated header name is found, column name will be prepended with column letter to maintain uniqueness. 0-based row location can be passed to this option if header is not located on the first row. | | ignoreEmpty | boolean | If true, empty rows won't be emitted. | | fillMergedCells | boolean | If true, merged cells will have the same value (by default, only the first cell of merged cells is filled with value). Warning! Enabling this feature may increase streaming time because file must be processed to detect merged cells before actual stream. | | numberFormat | standard or excel or object | By default standard format is used. Excel implementation of number formatting differs from standard (can be read here) so excel option can be used to match this difference. If custom formatting is needed, a dictionary object can be passed to this option. |

getWorksheets

Returns array of sheets with name and hidden info.

Options

| Option | Type | Description | | -------- | -------- | ----------------------- | | filePath | string | Path to the XLSX file |

Building

You can build js source by using npm run build command.

Testing

Tests can be run by using npm test command.