sheetjs/README.md

76 lines
2.7 KiB
Markdown
Raw Normal View History

2012-12-04 19:27:20 +00:00
# xlsx
Currently a parser for XLSX files. Cleanroom implementation from the ISO 29500 Office Open XML specifications.
This has been tested on some very basic XLSX files generated from Excel 2011.
*THIS WAS WHIPPED UP VERY QUICKLY TO SATISFY A VERY SPECIFIC NEED*. If you need something that is not currently supported, file an issue and attach a sample file. I will get to it :)
## Installation
In node:
npm install xlsx
In the browser:
<script lang="javascript" src="/path/to/jszip.js"></script>
<script lang="javascript" src="/path/to/xlsx.js"></script>
## Tested Environments
2013-04-20 16:22:32 +00:00
- Node 0.8.14, 0.10.1
- IE 6/7/8/9/10 using Base64 mode (IE10 using HTML5 mode)
- FF 18 using Base64 or HTML5 mode
- Chrome 24 using Base64 or HTML5 mode
2012-12-04 19:27:20 +00:00
## Usage
See `xlsx2csv.njs` in the bin directory for usage in node.
See http://niggler.github.com/js-xlsx/ for a browser example.
Note that IE does not support HTML5 File API, so the base64 mode is provided for testing. On OSX you can get the base64 encoding by running:
$ <target_file.xlsx base64 | pbcopy # the pbcopy puts the content in the clipboard
2012-12-04 19:27:20 +00:00
## Notes
`.SheetNames` is an ordered list of the sheets in the workbook
`.Sheets[sheetname]` returns a data structure representing the sheet. Each key
that does not start with `!` corresponds to a cell (using `A-1` notation).
2013-04-20 16:22:32 +00:00
`.Sheets[sheetname][address].v` returns the value of the specified cell and `.Sheets[sheetname][address].t` returns the type of the cell (constrained to the enumeration `ST_CellType` as documented in page 4215 of ISO/IEC 29500-1:2012(E) )
2012-12-04 19:27:20 +00:00
Simple usage:
var XLSX = require('xlsx')
var xlsx = XLSX.readFile('test.xlsx');
var sheet_name_list = xlsx.SheetNames;
xlsx.SheetNames.forEach(function(y) {
2013-03-15 15:24:01 +00:00
for (z in xlsx.Sheets[y]) {
2012-12-04 19:27:20 +00:00
if(z[0] === '!') continue;
2013-03-15 15:24:01 +00:00
console.log(y + "!" + z + "=" + JSON.stringify(xlsx.Sheets[y][z].v));
2012-12-04 19:27:20 +00:00
}
});
2013-04-20 16:22:32 +00:00
For more details:
- `bin/xlsx2csv.njs` is a tool for node
- `index.html` is the live demo
- `bits/90_utils.js` contains the logic for generating CSV and JSON from sheets
2012-12-04 19:27:20 +00:00
## License
Please consult the attached LICENSE file for details. All rights not explicitly granted by the MIT license are reserved by the Original Author.
2013-02-21 18:05:57 +00:00
## XLS Support
XLS is not supported in this module. Due to Licensing issues [that are discussed in more detail elsewhere](https://github.com/Niggler/js-xls/issues/1#issuecomment-13852286), the implementation cannot be released in a GPL or MIT-style license. If you need XLS support, consult [my js-xls project](https://github.com/Niggler/js-xls).
2012-12-04 19:27:20 +00:00
## References
ISO/IEC 29500:2012(E) "Information technology — Document description and processing languages — Office Open XML File Formats"
2012-12-03 19:25:53 +00:00