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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@srldl/exceldb

v1.1.3

Published

"Flexible excel-like UI for databases. Lightweight, vanilla javascript",

Readme

exceldb

alt text

The database version of an excel sheet. Excel-like web user interface which can be connected to a database backend. Lightweight code, vanilla javascript.

Note: This is a second version, and replaces edit-tabletest. See issues for errors and flaws as code is tested.

Install

Download and install:

npm i github.com/srldl/exceldb

Use

In your html file:

<head>
....
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
   <div class="exceldb" style="width: 100%; overflow:auto; float:left; overflow-y:auto; height:85%;">
    
      <button type="button" id="newBtn" >New</button>
      <button type="button" id="copyBtn">Copy</button>
      Add rows: <input type="text" name="addRows" id="addRows" size=2 maxlength=2>
      <button type="button" id="delBtn">Delete</button>
      <button type="button" id="saveBtn">Save</button>

      <table id="edit_table">
        <thead>
           <tr id="header1">
           </tr>
        </thead>
        <tbody id="tbody1">
        </tbody>
      </table>
   </div>

</body>

The html code is extensive which leave greater flexibility if you want to modify the ui. To include the style.css either copy it directly in the html header as shown, or use transforms for bundling such as browseriy-css (if you use browserify ).

If you wish to remove the scrollbars, change them in the first div style, although it is not recommended.

In your javascript file:


//Testdata
let dataRows=   [["A","Albuquerque","2019-06-14T12:00:00Z","A1"],
                  ["B","Alicante","2019-06-13T12:00:00Z","B1"],
                  ["C","Alabama","2019-06-14T12:00:00Z","C1 is very loooong text"],
                  ["D","Alkekongen","2019-07-17T12:00:00Z","D1"]];

//Create object with input parameters
//For headers, at the moment the last parameter should be id.
let obj =  {  "dataRows": dataRows,
              "headers": ["project", "subproject", "event_date","event", "id"],
              "headers_tooltip": ["project acronym max 5 letters","subproject name","start date","event name","identifier"],
              "selectlist": {"project":["A","B","C","D"]},
              "autocompletes": {"subproject":"internal"},
              "dateFields":["event_date"],
              "id": "exceldb",
              "sanitize":true
};


//Require exceldb npm library
let tb = require('@srldl/exceldb/index.js');
 
//Return json object where one array is one row
//Save to database or whatever you wish to do with the return object
//saveDB code should precede calling tb.insertTable so saveDb is known.
function saveDb(jsonObj){
    console.log(jsonObj);
}
  
 //Call edit-tabletest with callback handled in saveDB
 tb.insertTable(obj,saveDb);

  

where

  • dataRows: The rows from the database to display (previously saved rows)
  • headers: Column headers. At the moment, you need to add the "id" as the last column to include it.
  • headers_tooltip: Header field elaborations if you need to explain the header further.
  • selectlist: 1) Column headers where the selectlist should be created and 2) the select list alternatives.
  • autocompletes: Column headers where autocomplete should be offered. Autocomplete alternatives are unique strings previously written in the same column.
  • dataFields: Column headers to be interpreted as a date field.
  • id: table id name. Each row id will be called table id name and a running number starting from 1, f.ex. "exceltable-1". If you delete a row, that row id will cease to exist.
  • sanitize: Set to true if you wish to sanitize your input. False otherwise.

Functionality

  • Multiple rows can be created and copied. Use "Add rows" to add multiple new or copied rows.

  • Only one row can be deleted at a time.

  • Dates must be in the format of ISO6801, but since the html 5 input type="date" is used, time is always set to 12 noon f.ex. "2019-06-14T12:00:00Z"

  • Column header names must use letters a-z, 0-9 or underscore ("_") or hyphen ("-"). Space is not allowed.

Known larger issues

  • autocomplete goes behind the horizontal slider bar for the last rows.

Also, please see issues.