Cell Formatting
Format cells in Jspreadsheet using masks, locale-based formatting, and custom render functions. Control how numbers, currencies, dates, and percentages display to users while maintaining proper data validation during input.
Documentation
Configuration Properties
Spreadsheet Level
Property | Description |
---|---|
international?: object |
Define global locale and NumberFormat settings for cells with no specific format configuration |
autoCasting?: boolean |
Automatically convert numbers from strings. Default: true |
autoFormat?: boolean |
Automatically detect formats from strings. Default: true |
Column Level
Property | Description |
---|---|
mask?: string |
Excel-like token pattern that controls input validation and formatting during editing |
format?: string |
Excel-like token pattern that formats cell display after editing |
locale?: string |
Locale code for Intl.NumberFormat (e.g., 'en-US', 'pt-BR') |
options?: object |
Options for Intl.NumberFormat (style, currency, unit, etc.) |
render?: function |
Custom function to control cell content renderingrender(td, value, x, y, worksheet, options) => void |
International Settings
The international settings are based on JavaScript Intl.NumberFormat and define a general mask for all cells with a number in the spreadsheet with no other mask configuration.
jspreadsheet(document.getElementById('spreadsheet'), {
tabs: true,
worksheets: [{
minDimensions: [100,100],
tableOverflow: true,
tableWidth: 600
}],
international: {
locale: 'en-GB',
NumberFormat: {},
}
})
Mask and Format Tokens
The mask
property controls input validation during editing, while format
applies display formatting after editing. Both use Excel-compatible tokens:
Token | Description | Example Output |
---|---|---|
0 |
Integer number | 1234 |
0.00 |
Number with 2 decimal places | 1234.56 |
0% |
Percentage (integer) | 25% |
0.00% |
Percentage with 2 decimals | 25.50% |
#,##0 |
Number with thousand separators | 1,234 |
#,##0.00 |
Number with decimals and separators | 1,234.56 |
#,##0;(#,##0) |
Negative numbers in parentheses | 1,234 or (1,234) |
#,##0;[Red](#,##0) |
Negative numbers in red parentheses | 1,234 or (1,234) |
#,##0.00;(#,##0.00) |
Decimals with negative parentheses | 1,234.56 or (1,234.56) |
#,##0.00;[Red](#,##0.00) |
Decimals with red negative | 1,234.56 or (1,234.56) |
d-mmm-yy |
Date format | 1-Jan-22 |
d-mmm |
Day and month | 1-Jan |
dd/mm/yyyy |
Full date | 01/01/2022 |
mmm-yy |
Month and year | Jan-22 |
h:mm AM/PM |
12-hour time | 2:30 PM |
h:mm:ss AM/PM |
12-hour time with seconds | 2:30:45 PM |
h:mm |
24-hour time | 14:30 |
h:mm:ss |
24-hour time with seconds | 14:30:45 |
m/d/yy h:mm |
Date and time | 1/1/22 14:30 |
mm:ss |
Minutes and seconds | 05:30 |
[h]:mm:ss |
Hours over 24 with minutes/seconds | 25:30:45 |
Example
Basic example using mask in the column level.
<html>
<script src="https://jspreadsheet.com/v12/jspreadsheet.js"></script>
<script src="https://jsuites.net/v6/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v12/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v6/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<div id="spreadsheet"></div>
<script>
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
minDimensions: [6,6],
columns: [{
type: 'number',
mask: 'U$ #.##0,00'
}]
}]
});
</script>
</html>
import React, {useRef} from "react";
import {Spreadsheet, Worksheet, jspreadsheet} from "@jspreadsheet/react";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default function App() {
const spreadsheet = useRef();
const columns = [{
type: 'number',
mask: 'U$ #.##0,00'
}];
return (
<Spreadsheet ref={spreadsheet}>
<Worksheet columns={columns} minDimensions={[6, 6]}/>
</Spreadsheet>
);
}
<template>
<Spreadsheet ref="spreadsheet">
<Worksheet :columns="columns" :minDimensions="[6, 6]" />
</Spreadsheet>
</template>
<script>
import { Spreadsheet, Worksheet, jspreadsheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default {
components: {
Spreadsheet,
Worksheet,
},
data() {
const columns = [{
type: 'number',
mask: 'U$ #.##0,00'
}];
return {
columns
};
}
}
</script>
import { Component, ViewChild, ElementRef, AfterViewInit } from "@angular/core";
import jspreadsheet from "jspreadsheet";
import 'jsuites/dist/jsuites.css';
import 'jspreadsheet/dist/jspreadsheet.css';
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
@Component({
standalone: true,
selector: "app-root",
template: `<div #spreadsheet></div>`
})
export class AppComponent implements AfterViewInit {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
worksheets: [{
minDimensions: [6,6],
columns: [{
type: 'number',
// Excel like token to format the currency input
mask: 'U$ #.##0,00'
}]
}]
});
}
}
Locale
Currency Formatting
When using style: 'currency'
, the currency
property is required. Use currencyDisplay
and currencySign
to control currency symbol display.
<html>
<script src="https://jspreadsheet.com/v12/jspreadsheet.js"></script>
<script src="https://jsuites.net/v6/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v12/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v6/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<div id="spreadsheet"></div>
<script>
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
// India currency example
jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
data: [[1000], [2500], [750]],
minDimensions: [6,6],
columns: [{
type: 'number',
locale: 'en-IN',
options: { style:'currency', currency: 'INR' }
}]
}]
});
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet, jspreadsheet } from "@jspreadsheet/react";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default function App() {
const spreadsheet = useRef();
const data = [[1000], [2500], [750]];
const columns = [{
type: 'number',
locale: 'en-IN',
options: { style:'currency', currency: 'INR' }
}];
return (
<Spreadsheet ref={spreadsheet}>
<Worksheet data={data} columns={columns} minDimensions={[6,6]} />
</Spreadsheet>
);
}
<template>
<Spreadsheet ref="spreadsheet">
<Worksheet :data="data" :columns="columns" :minDimensions="[6,6]" />
</Spreadsheet>
</template>
<script>
import { Spreadsheet, Worksheet, jspreadsheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default {
components: {
Spreadsheet,
Worksheet,
},
data() {
const data = [[1000], [2500], [750]];
const columns = [{
type: 'number',
locale: 'en-IN',
options: { style:'currency', currency: 'INR' }
}];
return {
data,
columns
};
}
};
</script>
import { Component, ViewChild, ElementRef, AfterViewInit } from "@angular/core";
import jspreadsheet from "jspreadsheet";
import 'jsuites/dist/jsuites.css';
import 'jspreadsheet/dist/jspreadsheet.css';
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
@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: [[1000], [2500], [750]],
minDimensions: [6,6],
columns: [{
type: 'number',
locale: 'en-IN',
options: { style:'currency', currency: 'INR' }
}]
}]
});
}
}
Examples
Data Grid with Different Currencies
The example below implements number formatting using Intl.NumberFormat or mask.
See more examples of the spreadsheet format on jsfiddle
<html>
<script src="https://jspreadsheet.com/v12/jspreadsheet.js"></script>
<script src="https://jsuites.net/v6/jsuites.js"></script>
<link rel="stylesheet" href="https://jsuites.net/v6/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://jspreadsheet.com/v12/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<div id="spreadsheet"></div>
<script>
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
// Create a new spreadsheet
jspreadsheet(document.getElementById('spreadsheet'), {
toolbar: true,
worksheets: [
{
minDimensions:[6, 10],
data: [
[1024,1024,0.24,1024,1024,1024],
[1000.456,1000.456,0.4155,1000.456,1000.456,1000.456],
['547','547,98','7,98','547.98','547,98','547.98'],
],
columns: [
{
title:"Currency INR",
type: "number",
locale: 'en-IN',
options: { style:'currency', currency: 'INR' } },
{
title: "Currency BRL",
type: "number",
locale: 'pt-BR',
options: { style: 'currency', currency: 'BRL' } },
{
title: "Percent US",
type: "number",
mask: "0.00%" },
{
title: "Units Liter US",
type: "number",
locale: 'en-US',
options: { style: 'unit', unit: 'liter', unitDisplay: 'long' } },
{
type: "number",
format: '#.##0,00'
},
{
type: "number",
mask: '#,##0'
},
],
defaultColWidth: '110px',
}
]
});
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet } from "@jspreadsheet/react";
import jspreadsheet from "jspreadsheet";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default function App() {
// Spreadsheet array of worksheets
const spreadsheet = useRef();
// Data
const data = [
[1024,1024,0.24,1024,1024,1024],
[1000.456,1000.456,0.4155,1000.456,1000.456,1000.456],
['547','547,98','7,98','547.98','547,98','547.98'],
];
// Columns
const columns = [
{
title:"Currency INR",
type: "number",
locale: 'en-IN',
options: { style:'currency', currency: 'INR' } },
{
title: "Currency BRL",
type: "number",
locale: 'pt-BR',
options: { style: 'currency', currency: 'BRL' } },
{
title: "Percent US",
type: "number",
mask: "0.00%" },
{
title: "Units Liter US",
type: "number",
locale: 'en-US',
options: { style: 'unit', unit: 'liter', unitDisplay: 'long' } },
{
type: "number",
format: '#.##0,00'
},
{
type: "number",
mask: '#,##0'
}
];
// Render data grid component
return (
<Spreadsheet ref={spreadsheet} toolbar={true}>
<Worksheet data={data} columns={columns} minDimensions={[6,10]} defaultColWidth="110px" />
</Spreadsheet>
);
}
<template>
<Spreadsheet ref="spreadsheet">
<Worksheet :data="data" :columns="columns" :minDimensions="[6,10]" defaultColWidth="110px" />
</Spreadsheet>
</template>
<script>
import { Spreadsheet, Worksheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default {
components: {
Spreadsheet,
Worksheet,
},
data() {
// Data
const data = [
[1024,1024,0.24,1024,1024,1024],
[1000.456,1000.456,0.4155,1000.456,1000.456,1000.456],
['547','547,98','7,98','547.98','547,98','547.98'],
];
// Columns
const columns = [
{
title:"Currency INR",
type: "number",
locale: 'en-IN',
options: { style:'currency', currency: 'INR' } },
{
title: "Currency BRL",
type: "number",
locale: 'pt-BR',
options: { style: 'currency', currency: 'BRL' } },
{
title: "Percent US",
type: "number",
mask: "0.00%" },
{
title: "Units Liter US",
type: "number",
locale: 'en-US',
options: { style: 'unit', unit: 'liter', unitDisplay: 'long' } },
{
type: "number",
format: '#.##0,00'
},
{
type: "number",
mask: '#,##0'
}
];
return {
columns,
data
};
}
}
</script>
import { Component, ViewChild, ElementRef } from "@angular/core";
import jspreadsheet from "jspreadsheet";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
@Component({
selector: "app-root",
template: `<div #spreadsheet></div>`
})
export class AppComponent {
@ViewChild('spreadsheet') spreadsheet: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
toolbar: true,
worksheets: [
{
minDimensions:[6, 10],
data: [
[1024,1024,0.24,1024,1024,1024],
[1000.456,1000.456,0.4155,1000.456,1000.456,1000.456],
['547','547,98','7,98','547.98','547,98','547.98'],
],
columns: [
{
title:"Currency INR",
type: "number",
locale: 'en-IN',
options: { style:'currency', currency: 'INR' } },
{
title: "Currency BRL",
type: "number",
locale: 'pt-BR',
options: { style: 'currency', currency: 'BRL' } },
{
title: "Percent US",
type: "number",
mask: "0.00%" },
{
title: "Units Liter US",
type: "number",
locale: 'en-US',
options: { style: 'unit', unit: 'liter', unitDisplay: 'long' } },
{
type: "number",
format: '#.##0,00'
},
{
type: "number",
mask: '#,##0'
},
],
defaultColWidth: '110px',
}
]
});
}
}
Apply Masks Programmatically
The example below shows how to change the currency of the data grid
dynamically.
<html>
<script src="https://jspreadsheet.com/v12/jspreadsheet.js"></script>
<script src="https://jsuites.net/v6/jsuites.js"></script>
<link rel="stylesheet" href="https://jsuites.net/v6/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://jspreadsheet.com/v12/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<div id="spreadsheet"></div>
<p><input type="button" value="set $ #,##0.00 to A1" id="btn1" /></p>
<script>
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
let setFormat = function() {
table[0].setProperty(0, 0, {mask: '$ #,##0.00' }, true);
}
// Create the spreadsheet
let table = jspreadsheet(document.getElementById('spreadsheet'), {
tabs: true,
toolbar: true,
worksheets: [{
data: [['101.00']],
minDimensions: [6,8],
}],
});
document.getElementById("btn1").onclick = setFormat
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet } from "@jspreadsheet/react";
import jspreadsheet from "jspreadsheet";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default function App() {
// Spreadsheet array of worksheets
const spreadsheet = useRef();
// Data
const data = [['101.00']]
// Render data grid component
return (
<>
<Spreadsheet ref={spreadsheet} >
<Worksheet data={data} minDimensions={[6,10]} />
</Spreadsheet>
<input type="button" value="set $ #,##0.00 to A1"
onClick={() => spreadsheet.current[0].setProperty(0, 0, { mask: '$ #,##0.00' })} />
</>
);
}
<template>
<Spreadsheet ref="spreadsheet" >
<Worksheet :data="data" />
</Spreadsheet>
<input type="button" value="set $ #,##0.00 to A1" @click="setFormat" />
</template>
<script>
import { Spreadsheet, Worksheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default {
components: {
Spreadsheet,
Worksheet,
},
methods: {
setFormat() {
this.$refs.spreadsheet.current[0].setProperty(0, 0, { mask: '$ #,##0.00' })
}
},
data() {
// Data
const data = [['101.00']];
return {
data,
};
}
}
</script>
import { Component, ViewChild, ElementRef, AfterViewInit } from "@angular/core";
import jspreadsheet from "jspreadsheet";
import 'jsuites/dist/jsuites.css';
import 'jspreadsheet/dist/jspreadsheet.css';
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
@Component({
standalone: true,
selector: "app-root",
template: `
<div #spreadsheet></div>
<button type="button" (click)="this.worksheets[0].setProperty(0, 0, {mask: '$ #,##0.00' });">set $ #,##0.00 to A1</button>
`
})
export class AppComponent implements AfterViewInit {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
tabs: true,
toolbar: true,
worksheets: [{
data: [['101.00']],
minDimensions: [6,8],
}],
});
}
}
Custom Formatting with MomentJS
The example below shows how to mask a cell using MomentJS.
<html>
<script src="https://jspreadsheet.com/v12/jspreadsheet.js"></script>
<script src="https://jsuites.net/v6/jsuites.js"></script>
<link rel="stylesheet" href="https://jsuites.net/v6/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://jspreadsheet.com/v12/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<script src="https://cdn.jsdelivr.net/npm/moment/moment.min.js"></script>
<div id="spreadsheet"></div>
<script>
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
// Create a new spreadsheet
const customRender = function(td, value, x, y, instance, options) {
if (td && td.innerText && options.customFormat) {
td.innerText = moment(td.innerText).format(options.customFormat);
}
}
// Create the spreadsheet
jspreadsheet(document.getElementById('spreadsheet'), {
tabs: true,
toolbar: true,
worksheets: [{
data: [['2022-01-01 12:14:12'],['=TODAY()']],
columns: [{
width: 300,
customFormat: 'MMMM Do YYYY, h:mm:ss a',
render: customRender,
align: 'right',
}],
minDimensions: [4,8],
}],
});
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet } from "@jspreadsheet/react";
import jspreadsheet from "jspreadsheet";
import moment from "moment";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
// Create a new spreadsheet
const customRender = function(td, value, x, y, instance, options) {
if (td && td.innerText && options.customFormat) {
td.innerText = moment(td.innerText).format(options.customFormat);
}
}
export default function App() {
// Spreadsheet array of worksheets
const spreadsheet = useRef();
// Data
const data = [['2022-01-01 12:14:12'],['=TODAY()']];
// Columns
const columns = [{
width: 300,
customFormat: 'MMMM Do YYYY, h:mm:ss a',
render: customRender,
align: 'right',
}]
// Render data grid component
return (
<Spreadsheet ref={spreadsheet} >
<Worksheet data={data} columns={columns} minDimensions={[4,8]} />
</Spreadsheet>
);
}
<template>
<Spreadsheet ref="spreadsheet" >
<Worksheet :data="data" :columns="columns" :minDimensions="[4, 8]" />
</Spreadsheet>
</template>
<script>
import { Spreadsheet, Worksheet } from '@jspreadsheet/vue';
import moment from 'moment';
import 'jsuites/dist/jsuites.css';
import 'jspreadsheet/dist/jspreadsheet.css';
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default {
components: {
Spreadsheet,
Worksheet,
},
methods: {
customRender(td, value, x, y, instance, options) {
if (td && td.innerText && options.customFormat) {
td.innerText = moment(td.innerText).format(options.customFormat);
}
},
},
data() {
// Data
const data = [['2022-01-01 12:14:12'], ['=TODAY()']];
// Columns
const columns = [
{
width: 300,
customFormat: 'MMMM Do YYYY, h:mm:ss a',
render: this.customRender,
align: 'right',
},
];
return {
data,
columns,
};
},
};
</script>
// @ts-nocheck
import { Component, ViewChild, ElementRef } from '@angular/core';
import jspreadsheet from 'jspreadsheet';
import moment from 'moment';
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('YTFjNjMwMGM2OWVlZTYzMzc5MTBjOTQ4MTNmOTg5NzhkODk1MDg4ZTI0ZjljYmFlYTFjNDA4N2IzNjkxMzc5ZGFmYTYxYTgzNzBlMjQ2NTk2ZTgyYWY0NDJiNWJkZDRiYWUyNTI2YzAyOGNhYzIwODhhZmU5MDI3Yzc1NjZhN2MsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azFPRGt4TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
// Create a new spreadsheet
const customRender = function(td, value, x, y, instance, options) {
if (td && td.innerText && options.customFormat) {
td.innerText = moment(td.innerText).format(options.customFormat);
}
}
@Component({
selector: "app-root",
template: `<div #spreadsheet></div>`
})
export class AppComponent {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
tabs: true,
toolbar: true,
worksheets: [{
data: [['2022-01-01 12:14:12'],['=TODAY()']],
columns: [{
width: 300,
customFormat: 'MMMM Do YYYY, h:mm:ss a',
render: customRender,
align: 'right',
}],
minDimensions: [4,8],
}]
});
}
}