forked from sheetjs/sheetjs
67 lines
1.5 KiB
Markdown
67 lines
1.5 KiB
Markdown
|
# SystemJS Demos
|
||
|
|
||
|
SystemJS supports both browser and nodejs deployments. It does not recognize
|
||
|
browser environments and automatically suppress node core modules, but with some
|
||
|
configuration magic SystemJS can load the library.
|
||
|
|
||
|
## Browser
|
||
|
|
||
|
SystemJS fails by default because the library does not export anything in the
|
||
|
web browser. This is easily addressed in the config:
|
||
|
|
||
|
```js
|
||
|
SystemJS.config({
|
||
|
meta: {
|
||
|
'xlsx': {
|
||
|
exports: 'XLSX' // <-- tell SystemJS to expose the XLSX variable
|
||
|
}
|
||
|
},
|
||
|
map: {
|
||
|
'xlsx': 'xlsx.full.min.js', // <-- make sure xlsx.full.min.js is in same dir
|
||
|
'fs': '', // <--|
|
||
|
'crypto': '', // <--| suppress native node modules
|
||
|
'stream': '' // <--|
|
||
|
}
|
||
|
});
|
||
|
SystemJS.import('main.js')
|
||
|
```
|
||
|
|
||
|
In your main JS script, just use require:
|
||
|
|
||
|
```js
|
||
|
var XLSX = require('xlsx');
|
||
|
var w = XLSX.read('abc,def\nghi,jkl', {type:'binary'});
|
||
|
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
|
||
|
console.log(j);
|
||
|
```
|
||
|
|
||
|
The file functions `readFile` and `writeFile` are not available in the browser.
|
||
|
|
||
|
## Node
|
||
|
|
||
|
The node core modules should be mapped to their `@node` equivalents:
|
||
|
|
||
|
```js
|
||
|
var SystemJS = require('systemjs');
|
||
|
SystemJS.config({
|
||
|
map: {
|
||
|
'xlsx': 'node_modules/xlsx/xlsx.js',
|
||
|
'fs': '@node/fs',
|
||
|
'crypto': '@node/crypto',
|
||
|
'stream': '@node/stream'
|
||
|
}
|
||
|
});
|
||
|
```
|
||
|
|
||
|
And use is pretty straightforward:
|
||
|
|
||
|
```js
|
||
|
SystemJS.import('xlsx').then(function(XLSX) {
|
||
|
/* XLSX is available here */
|
||
|
var w = XLSX.readFile('test.xlsx');
|
||
|
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
|
||
|
console.log(j);
|
||
|
});
|
||
|
```
|
||
|
|