xsheetjs/README.md

99 lines
3.5 KiB
Markdown
Raw Normal View History

2013-12-06 16:49:25 +00:00
# SSF
2017-03-12 07:34:36 +00:00
ssf (SpreadSheet Format) is a pure-JS library to format data using ECMA-376
spreadsheet format codes (used in popular spreadsheet software packages).
2013-12-06 16:49:25 +00:00
2017-03-12 07:34:36 +00:00
## Installation
2013-12-06 16:49:25 +00:00
2017-03-12 07:34:36 +00:00
With [npm](https://www.npmjs.org/package/ssf):
```bash
$ npm install ssf
```
2013-12-06 16:49:25 +00:00
In the browser:
2017-03-12 07:34:36 +00:00
```html
<script src="ssf.js"></script>
```
2013-12-06 16:49:25 +00:00
2017-03-12 07:34:36 +00:00
The browser exposes a variable `SSF`
2013-12-06 16:49:25 +00:00
2017-03-12 07:34:36 +00:00
When installed globally, npm installs a script `ssf` that renders the format
string with the given arguments. Running the script with `-h` displays help.
2013-12-06 16:49:25 +00:00
2017-03-12 07:34:36 +00:00
The script will manipulate `module.exports` if available (e.g. in a CommonJS
`require` context). This is not always desirable. To prevent the behavior,
define `DO_NOT_EXPORT_SSF`.
2013-12-06 16:49:25 +00:00
## Usage
2017-03-12 07:34:36 +00:00
`SSF.format(fmt, val, opts)` formats `val` using the format `fmt`. If `fmt` is
a string, it will be parsed and evaluated. If `fmt` is a `number`, the actual
format will be the corresponding entry in the internal format table.
### Manipulating the Internal Format Table
Binary spreadsheet formats store cell formats in a table and reference by index.
This library uses a global table:
`SSF._table` is the underlying object, mapping numeric keys to format strings.
`SSF.load(fmt:string, idx:?number):number` assigns the format to the specified
index and returns the index. If the index is not specified, SSF will search the
space for an available format slot pick an unused slot. For compatibility with
the XLS and XLSB file formats, custom indices should be in the valid ranges
`5-8`, `23-26`, `41-44`, `63-66`, `164-382` (see `[MS-XLSB] 2.4.655 BrtFmt`)
2013-12-06 16:49:25 +00:00
2017-03-12 07:34:36 +00:00
`SSF.get_table()` gets the internal format table (number to format mapping).
2013-12-06 16:49:25 +00:00
2017-03-12 07:34:36 +00:00
`SSF.load_table(table)` sets the internal format table.
2017-03-12 07:34:36 +00:00
### Other Utilities
2017-03-12 07:34:36 +00:00
`SSF.parse_date_code(val:number, opts:?any)` parses `val`, returning an object:
2017-03-12 07:34:36 +00:00
```typescript
type SSFDate = {
D:number; /* number of whole days since relevant epoch, 0 <= D */
y:number; /* integral year portion, epoch_year <= y */
m:number; /* integral month portion, 1 <= m <= 12 */
d:number; /* integral day portion, subject to gregorian YMD constraints */
q:number; /* integral day of week (0=Sunday .. 6=Saturday) 0 <= q <= 6 */
2017-03-12 07:34:36 +00:00
T:number; /* number of seconds since midnight, 0 <= T < 86400 */
H:number; /* integral number of hours since midnight, 0 <= H < 24 */
M:number; /* integral number of minutes since the last hour, 0 <= M < 60 */
S:number; /* integral number of seconds since the last minute, 0 <= S < 60 */
u:number; /* sub-second part of time, 0 <= u < 1 */
}
```
2013-12-06 16:49:25 +00:00
## License
2017-03-12 07:34:36 +00:00
Please consult the attached LICENSE file for details. All rights not explicitly
granted by the Apache 2.0 license are reserved by the Original Author.
2017-03-12 07:34:36 +00:00
## References
- [ECMA-376] Office Open XML File Formats
- [MS-XLSB] Excel (.xlsb) Binary File Format
## Badges
[![Sauce Test Status](https://saucelabs.com/browser-matrix/ssfjs.svg)](https://saucelabs.com/u/ssfjs)
[![Build Status](https://travis-ci.org/SheetJS/ssf.svg?branch=master)](https://travis-ci.org/SheetJS/ssf)
2017-03-12 07:34:36 +00:00
[![Coverage Status](http://img.shields.io/coveralls/SheetJS/ssf/master.svg)](https://coveralls.io/r/SheetJS/ssf?branch=master)
[![NPM Downloads](https://img.shields.io/npm/dt/ssf.svg)](https://npmjs.org/package/ssf)
[![Dependencies Status](https://david-dm.org/sheetjs/ssf/status.svg)](https://david-dm.org/sheetjs/ssf)
2014-02-17 09:28:06 +00:00
2017-03-12 07:34:36 +00:00
[![ghit.me](https://ghit.me/badge.svg?repo=sheetjs/js-xlsx)](https://ghit.me/repo/sheetjs/js-xlsx)
2017-03-12 07:34:36 +00:00
[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/ssf?pixel)](https://github.com/SheetJS/ssf)