Jspreadsheet Bundle
The Jspreadsheet Bundle provides a convenient all-in-one package that includes the core library and all available extensions. This simplifies setup by eliminating the need to install and configure each extension separately.
Installation
Download
Download the complete bundle package from: https://jspreadsheet.com/v12/bundle.zip
Extract the files and include them in your project:
<script src="./bundle/index.js"></script>
<link rel="stylesheet" href="./bundle/style.css">
NPM
Install the bundle using NPM:
npm install @jspreadsheet/bundle
Documentation
Available Packages
The bundle includes the following packages:
| Package | Description |
|---|---|
jspreadsheet |
Core spreadsheet library |
bar |
Formula bar extension for cell editing |
comments |
Cell comments functionality |
format |
Number and cell formatting |
charts |
Chart integration for data visualization |
formula |
Formula Pro extension for advanced calculations |
parser |
Expression parser for formulas |
render |
Custom cell rendering extension |
search |
Advanced search and replace functionality |
shapes |
Shapes and drawing tools |
validations |
Cell validation rules |
Basic Usage
After including the bundle, all packages are available through the global packages object:
// Extract the packages you need
const {
jspreadsheet,
bar,
comments,
format,
charts,
formula,
parser,
render,
search,
shapes,
validations
} = packages;
// Set your license
jspreadsheet.setLicense('your-license-key');
// Register the extensions you want to use
jspreadsheet.setExtensions({ render, bar, formula, search });
// Create the spreadsheet
const worksheets = jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
minDimensions: [10, 10]
}]
});
Examples
Basic Spreadsheet with Extensions
A basic example using the bundle with multiple extensions enabled.
<html>
<script src="./bundle/index.js"></script>
<link rel="stylesheet" href="./bundle/style.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<div id="spreadsheet"></div>
<script>
// Extract packages from the bundle
const { jspreadsheet, bar, formula, render, search, validations } = packages;
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('N2M1MTY2NmNjODBmZGIzMmI5MGIyY2U3ZDc1NGE4NWI0ZjljYTQ2YTI0MGI4NWJkYTY1Y2VhMjkzMTNiMTQyMTcxMTc1YTc4MzU4YjAxNTVhMTdmYWI5NzkzN2E3NGU1MTBiMzk1OGUwMmJlNTJjNTc5NGU3ZmFiMjM2NmJjMzcsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpZNU1qVTVORFkwTENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElpd2ljR2wyYjNRaVhTd2laR1Z0YnlJNmRISjFaWDA9');
// Register extensions
jspreadsheet.setExtensions({ bar, formula, render, search, validations });
// Create the spreadsheet
jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
data: [
['Product', 'Price', 'Quantity', 'Total'],
['Apple', 1.50, 10, '=B2*C2'],
['Orange', 2.00, 15, '=B3*C3'],
['Banana', 0.75, 20, '=B4*C4'],
['', '', 'Grand Total', '=SUM(D2:D4)'],
],
columns: [
{ title: 'Product', width: 150 },
{ title: 'Price', width: 100 },
{ title: 'Quantity', width: 100 },
{ title: 'Total', width: 100 },
]
}]
});
</script>
</html>
import React, { useRef, useEffect } from "react";
// Import the bundle
import { jspreadsheet, bar, formula, render, search, validations } from "@jspreadsheet/bundle";
import "@jspreadsheet/bundle/dist/style.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('N2M1MTY2NmNjODBmZGIzMmI5MGIyY2U3ZDc1NGE4NWI0ZjljYTQ2YTI0MGI4NWJkYTY1Y2VhMjkzMTNiMTQyMTcxMTc1YTc4MzU4YjAxNTVhMTdmYWI5NzkzN2E3NGU1MTBiMzk1OGUwMmJlNTJjNTc5NGU3ZmFiMjM2NmJjMzcsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpZNU1qVTVORFkwTENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElpd2ljR2wyYjNRaVhTd2laR1Z0YnlJNmRISjFaWDA9');
// Register extensions
jspreadsheet.setExtensions({ bar, formula, render, search, validations });
export default function App() {
const spreadsheetRef = useRef(null);
useEffect(() => {
if (!spreadsheetRef.current.jspreadsheet) {
jspreadsheet(spreadsheetRef.current, {
worksheets: [{
data: [
['Product', 'Price', 'Quantity', 'Total'],
['Apple', 1.50, 10, '=B2*C2'],
['Orange', 2.00, 15, '=B3*C3'],
['Banana', 0.75, 20, '=B4*C4'],
['', '', 'Grand Total', '=SUM(D2:D4)'],
],
columns: [
{ title: 'Product', width: 150 },
{ title: 'Price', width: 100 },
{ title: 'Quantity', width: 100 },
{ title: 'Total', width: 100 },
]
}]
});
}
}, []);
return <div ref={spreadsheetRef} />;
}
<template>
<div ref="spreadsheet"></div>
</template>
<script>
// Import the bundle
import { jspreadsheet, bar, formula, render, search, validations } from "@jspreadsheet/bundle";
import "@jspreadsheet/bundle/dist/style.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('N2M1MTY2NmNjODBmZGIzMmI5MGIyY2U3ZDc1NGE4NWI0ZjljYTQ2YTI0MGI4NWJkYTY1Y2VhMjkzMTNiMTQyMTcxMTc1YTc4MzU4YjAxNTVhMTdmYWI5NzkzN2E3NGU1MTBiMzk1OGUwMmJlNTJjNTc5NGU3ZmFiMjM2NmJjMzcsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpZNU1qVTVORFkwTENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElpd2ljR2wyYjNRaVhTd2laR1Z0YnlJNmRISjFaWDA9');
// Register extensions
jspreadsheet.setExtensions({ bar, formula, render, search, validations });
export default {
mounted() {
jspreadsheet(this.$refs.spreadsheet, {
worksheets: [{
data: [
['Product', 'Price', 'Quantity', 'Total'],
['Apple', 1.50, 10, '=B2*C2'],
['Orange', 2.00, 15, '=B3*C3'],
['Banana', 0.75, 20, '=B4*C4'],
['', '', 'Grand Total', '=SUM(D2:D4)'],
],
columns: [
{ title: 'Product', width: 150 },
{ title: 'Price', width: 100 },
{ title: 'Quantity', width: 100 },
{ title: 'Total', width: 100 },
]
}]
});
}
}
</script>
import { Component, ViewChild, ElementRef, AfterViewInit } from "@angular/core";
// Import the bundle
import { jspreadsheet, bar, formula, render, search, validations } from "@jspreadsheet/bundle";
import "@jspreadsheet/bundle/dist/style.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('N2M1MTY2NmNjODBmZGIzMmI5MGIyY2U3ZDc1NGE4NWI0ZjljYTQ2YTI0MGI4NWJkYTY1Y2VhMjkzMTNiMTQyMTcxMTc1YTc4MzU4YjAxNTVhMTdmYWI5NzkzN2E3NGU1MTBiMzk1OGUwMmJlNTJjNTc5NGU3ZmFiMjM2NmJjMzcsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpZNU1qVTVORFkwTENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElpd2ljR2wyYjNRaVhTd2laR1Z0YnlJNmRISjFaWDA9');
// Register extensions
jspreadsheet.setExtensions({ bar, formula, render, search, validations });
@Component({
standalone: true,
selector: "app-root",
template: `<div #spreadsheet></div>`
})
export class AppComponent implements AfterViewInit {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
worksheets: jspreadsheet.worksheetInstance[];
ngAfterViewInit() {
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
worksheets: [{
data: [
['Product', 'Price', 'Quantity', 'Total'],
['Apple', 1.50, 10, '=B2*C2'],
['Orange', 2.00, 15, '=B3*C3'],
['Banana', 0.75, 20, '=B4*C4'],
['', '', 'Grand Total', '=SUM(D2:D4)'],
],
columns: [
{ title: 'Product', width: 150 },
{ title: 'Price', width: 100 },
{ title: 'Quantity', width: 100 },
{ title: 'Total', width: 100 },
]
}]
});
}
}