2023-10-24 06:20:57 +00:00
|
|
|
---
|
|
|
|
title: SSF Number Formatter
|
2023-10-27 01:49:35 +00:00
|
|
|
hide_table_of_contents: true
|
2023-10-24 06:20:57 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
As explained in ["Number Formats"](/docs/csf/features/nf), modern spreadsheet
|
|
|
|
file formats separate "content" from "presentation". Instead of storing a
|
|
|
|
formatted value like `$3.50`, applications will store the underlying value
|
|
|
|
(`3.50`) and the number format (`$0.00`). Parsers are expected to render values.
|
|
|
|
|
2023-10-27 01:49:35 +00:00
|
|
|
The SheetJS `SSF` ("SpreadSheet Format") library formats numbers according
|
2023-10-24 06:20:57 +00:00
|
|
|
to the number formatting rules defined in Excel and other spreadsheet software[^1]
|
|
|
|
|
|
|
|
A version of the library ships with the main file processing library. It is
|
|
|
|
deeply integrated in SheetJS CE API functions including `read`[^2], `write`[^3],
|
|
|
|
and `sheet_to_json`[^4].
|
|
|
|
|
|
|
|
The library is also available for standalone use on the SheetJS CDN[^5].
|
|
|
|
|
|
|
|
The source code and project documentation is hosted on the SheetJS git server at
|
|
|
|
<https://git.sheetjs.com/sheetjs/sheetjs/src/branch/master/packages/ssf>
|
|
|
|
|
2023-10-27 01:49:35 +00:00
|
|
|
## Live Demo
|
|
|
|
|
|
|
|
The formatted text is calculated from the specified number format and value.
|
|
|
|
Please [report an issue](https://git.sheetjs.com/sheetjs/sheetjs/issues) if a
|
|
|
|
particular format is not supported.
|
|
|
|
|
|
|
|
```jsx live
|
|
|
|
function SheetJSSSF() {
|
|
|
|
const [fmt, setFmt] = React.useState("#,##0");
|
|
|
|
const [val, setVal] = React.useState(7262);
|
|
|
|
|
|
|
|
const format = (fmt, val) => { try {
|
|
|
|
return XLSX.SSF.format(fmt, val);
|
|
|
|
} catch(e) { return "ERROR: " + (e && e.message || e); } };
|
|
|
|
|
|
|
|
return ( <table>
|
|
|
|
<tr><td><b>Number Format</b></td><td>
|
|
|
|
<input type="text" value={fmt} onChange={e => setFmt(e.target.value)}/>
|
|
|
|
</td></tr>
|
|
|
|
<tr><td><b>Number Value</b></td><td>
|
|
|
|
<input type="text" value={val} onChange={e => setVal(+e.target.value)}/>
|
|
|
|
</td></tr>
|
|
|
|
<tr><td colspan="2"></td></tr>
|
|
|
|
<tr><td><b>Formatted Text</b></td><td>
|
|
|
|
<code>{format(fmt, val)}</code>
|
|
|
|
</td></tr>
|
|
|
|
</table> );
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2023-10-24 06:20:57 +00:00
|
|
|
[^1]: The number formatting rules are sketched in ECMA-376. A rough grammar is defined in the MS-XLS specification.
|
|
|
|
[^2]: See [`read` in "Reading Files"](/docs/api/parse-options)
|
|
|
|
[^3]: See [`write` in "Writing Files"](/docs/api/write-options)
|
|
|
|
[^4]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output)
|
|
|
|
[^5]: See <https://cdn.sheetjs.com/ssf/> for more details.
|