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

@juraj336/node-red-buffer-xlsx

v1.0.1

Published

A simple node to convert a JSON to an excel buffer

Downloads

186

Readme

node-red-buffer-xlsx

A simple node-red node for converting JSON to a buffered xlsx. This package uses the node package better-xlsx.

Usage

To ensure the node works correctly the JSON has to be formatted in a certain way. All styling options are optional.

Sheet Formatting

The JSON can consist of multiple sheets, these are the properties each sheet can have:

  • sheet_name

  • sheet_styling

  • header_styling

  • columns_styling

  • rows

    sheet_name (required): This is the name the sheet shall receive at the bottom.

    sheet_styling (optional): Styling for the entire sheet, see Styling Formats

    header_styling (optional): Styling for the header row, see Styling Formats

    columns_styling (optional): columns_styling should be an array of object with the following info:

    • index

    • column_styling

      index: The column you want to apply the styling to starting at 0

      column_styling: See Styling Formats

    rows (required): See Row Formatting.

Sheet Example:

[
 {
   "sheet_name": "sheet1",
   "sheet_styling": {
     "hAlign": "center",
     "fSize": "11"
   },
   "header_styling": {
     "fBold": true
   },
   "columns_styling": [
     {
       "index": 0,
       "column_styling": {
         "fItalic": true
       }
     }
   ],
   "rows": [
     {
       // See # Row Formatting
     }
   ]
 }
]

Row Formatting

The JSON can consist of multiple rows, these are the properties each row can have:

  • row_styling

  • cells

    row_styling (optional): Styling for the entire row, see Styling Formats

    cells (required): See Cell Formatting.

Row Example:

"rows": [
  {
    "row_styling": {
      "hAlign": "left"
     },
    "cells": [
      {
        // See # Cells Formatting
      }
    ]
  }
]

Cell Formatting

The JSON can consist of multiple cells, these are the properties each cell can have:

  • cell_value

  • cell_styling

    cell_value (optional): Value that will be displayed in the cell

    cell_styling (optional): Styling for single cell, see Styling Formats.

Cell Example

"cells": [
  {
    "cell_value": "Hello there!",
    "cell_styling": {
      "fColor": "ffa2917d"
    }
  }
]

Styling Formats

Each of the properties ending with styling can include the following optional properties:

  • pattern_type

  • fgColor

  • bgColor

  • hAlign

  • vAlign

  • indent

  • shrinkToFit

  • textRotation

  • wrapText

  • fSize

  • fName

  • fFamily

  • fCharset

  • fColor

  • fBold

  • fItalic

  • fUnderline

  • cell_format

  • cell_formula

    pattern_type: Specifies if cell background should be filled or not with the following options:

    • solid
    • none

    fgColor: Decides the foreground colour of the cell, all colours should be in HEX RBGA format without the #.

    bgColor: Deicdes the background colour of the cell, all colours should be in HEX RGBA format without the #.

    hAlign: Horizontal Alignment of cell values with the following options:

    • general
    • center
    • left
    • right

    vAlign: Vertical Alignment of cell values with the following options:

    • general
    • top
    • bottom
    • center

    indent: Decides indent of cell, should be a numeric value.

    shrinkToFit: Decides whether the cell value should shrink to fit the cell, should be a boolean.

    textRotation: Decides the rotation of the cell value, should be a numeric value between 0 and 255.

    wrapText: Decides whether the cell value should wrap to fit the cell, should be a boolean.

    fSize: Decides the cell value's font size, should be a numeric value.

    fName: Decides the cell value's font family, should be a font family.

    fFamily:

    • TBD

    fCharset: Decides the cell value's charset, should be a charset.

    fColor: Decides the cell value's colour, all colours should be in HEX RGBA format without the #.

    fBold: Decides whether the cell's value is Bold or not, should be a boolean.

    fItalic: Decides whether the cell's value is Italic or not, should be a boolean.

    fUnderline: Decides whether the cell's value is underlined or not, should be a boolean.

    cell_format: Decides number formatting for the cell with following options as example:

    "0" // integer index to built in formats
    "0.00%" // string matching a built-in format
    "0.0%" // string specifying a custom format
    "0.00%;\\(0.00%\\);\\-;@" // string specifying a custom format, escaping special characters
    "m/dd/yy" // string a date format using Excel's format notation

    cell_formula: Decides the cell's formula, see excel formulas for more.

    Borders: Decides the cell's borders formatting using the following parameters:

    • all
    • top
    • right
    • bottom
    • left

    Each of them can have the following:

    • style
    • bColor

    style: Style can consist of the following types of border styles:

    thin
    medium
    thick
    dotted
    hair
    dashed
    mediumDashed
    dashDot
    mediumDashDot
    dashDotDot
    mediumDashDotDot
    slantDashDot

    bColor: Decides the colour of the borders, all colours should be in HEX RGBA format without the #.

Styling Priorities: Styling is done in the following order:

  1. Cell Styling
  2. Header Styling
  3. Column Styling
  4. Row Styling
  5. Sheet Styling

Unless Style Merging is selected the top priority will always be the only style chosen. If Style Merging is selected however the node will attempt to merge styles while still following the priority.

Full Styling Example:

{
  "pattern_type": "solid",
  "fgColor": "ffa2917d",
  "bgColor": "43ff64d9",
  "hAlign": "center",
  "vAlign": "top",
  "indent": "3",
  "shrinkToFit": false,
  "textRotation": "155",
  "wrapText": true,
  "fSize": "11",
  "fName": "Calibri",
  "fFamily": "Calibri",
  "fCharset": "UTF-8",
  "fColor": "9b0f64d9",
  "fBold": true,
  "fItalic": false,
  "fUnderline": false,
  "cell_format": "m/dd/yy",
  "cell_formula": "A1 - C2",
  "borders": {
    "top": {
      "style": "medium",
      "bColor": "009b9bd9"
    },
    "right": {
      "style": "thin",
      "bColor": "9b0f64d9"
    },
    "bottom": {
      "style": "thick",
      "bColor": "9b0f64d9"
    },
    "left": {
      "style": "dashDotDot",
      "bColor": "009b9bd9"
    }
  }
}

Full Examples

Here some examples of full JSON

Simple JSON

[
  {
    "sheet_name": "SimpleSheet",
    "sheet_styling": {
      "pattern_type": "solid",
      "fgColor": "ffffffff",
      "bgColor": "FE0000",
      "hAlign": "left",
      "vAlign": "left",
      "borders": {
       "all": {
        "style": "thick",
        "bColor": "009b9bd9"
       }
      }
    },
    "header_styling": {
      "pattern_type": "solid",
      "fgColor": "ffffffff",
      "bgColor": "ffe4e2de",
      "hAlign": "center",
      "vAlign": "center",
      "fBold": true
    },
    "columns_styling": [
      {
        "index": 0,
        "column_styling": {
          "hAlign": "right",
          "vAlign": "center",
          "fBold": true
        }
      },
      {
        "index": 4,
        "column_styling": {
          "hAlign": "right",
          "vAlign": "top",
          "fItalic": true
        }
      }
    ],
    "rows": [
      {
        "row_styling": {
          "pattern_type": "solid",
          "fgColor": "ffffffff",
          "bgColor": "ffe4e2de",
          "hAlign": "center",
          "vAlign": "center"
        },
        "cells": [
          {
            "cell_value": "ID",
            "cell_formula": "",
            "cell_format": "",
            "cell_styling": {
              "fBold": false
            }
          },
          {
            "cell_value": "Name",
            "cell_styling": {
              "fBold": false
            }
          },
          {
            "cell_value": "Company",
            "cell_styling": {
              "fBold": false
            }
          },
          {
            "cell_value": "Location",
            "cell_formula": "",
            "cell_format": "",
            "cell_styling": {
              "fBold": false
            }
          },
          {
            "cell_value": "Price"
          },
          {
            "cell_value": "Amount"
          }
        ]
      },
      {
        "row_styling": {
          "pattern_type": "solid",
          "fgColor": "ffffffff",
          "bgColor": "ffe4e2de",
          "hAlign": "center",
          "vAlign": "center"
        },
        "cells": [
          {
            "cell_value": "238126"
          },
          {
            "cell_value": "James. B."
          },
          {
            "cell_value": "Makers.BV",
            "cell_styling": {
              "pattern_type": "solid",
              "bgColor": "430f6480",
              "fColor": "FF000000"
            }
          },
          {
            "cell_styling": {
              "fBold": true,
              "fgColor": "43ff6480"
            }
          },
          {
            "cell_value": "152,00",
            "cell_format": "$0,00"
          },
          {
            "cell_value": "16,00",
            "cell_formula": "A2 - E2"
          }
        ]
      }
    ]
  }
]

Complex JSON

  • To be made

TODO:

  • [ ] Testing
  • [ ] Complex JSON
  • [ ] Ability for more complex features
  • [X] Border Support