forked from sheetjs/sheetjs
		
	README improvements [ci skip]
This commit is contained in:
		
							parent
							
								
									489b9cdde4
								
							
						
					
					
						commit
						ba1ff17595
					
				
							
								
								
									
										158
									
								
								README.md
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										158
									
								
								README.md
									
									
									
									
									
								
							| @ -5,7 +5,7 @@ ISO 29500  Office Open XML specifications, [MS-XLSB], and related documents. | ||||
| 
 | ||||
| ## Installation | ||||
| 
 | ||||
| In [node](https://www.npmjs.org/package/xlsx): | ||||
| In [nodejs](https://www.npmjs.org/package/xlsx): | ||||
| 
 | ||||
|     npm install xlsx | ||||
| 
 | ||||
| @ -29,7 +29,7 @@ Older versions of this README recommended a more explicit approach: | ||||
| 
 | ||||
| ## Optional Modules | ||||
| 
 | ||||
| The node version automatically requires modules for additional features.  Some | ||||
| The nodejs version automatically requires modules for additional features.  Some | ||||
| of these modules are rather large in size and are only needed in special | ||||
| circumstances, so they do not ship with the core.  For browser use, they must | ||||
| be included directly: | ||||
| @ -41,50 +41,144 @@ An appropriate version for each dependency is included in the dist/ directory. | ||||
| 
 | ||||
| The complete single-file version is generated at `dist/xlsx.full.min.js` | ||||
| 
 | ||||
| ## Usage | ||||
| ## Parsing Workbooks | ||||
| 
 | ||||
| Simple usage (walks through every cell of every sheet and dumps the values): | ||||
| For parsing, the first step is to read the file. | ||||
| 
 | ||||
|     if(typeof require !== 'undefined') XLSX = require('xlsx'); | ||||
|     var workbook = XLSX.readFile('test.xlsx'); | ||||
|     var sheet_name_list = workbook.SheetNames; | ||||
|     sheet_name_list.forEach(function(y) { | ||||
|       var worksheet = workbook.Sheets[y]; | ||||
|       for (z in worksheet) { | ||||
|         if(z[0] === '!') continue; | ||||
|         console.log(y + "!" + z + "=" + JSON.stringify(worksheet[z].v)); | ||||
|       } | ||||
|     }); | ||||
| - nodejs: | ||||
| 
 | ||||
| An example of writing an array-of-arrays is available at <http://git.io/WEK88Q> | ||||
| ``` | ||||
| if(typeof require !== 'undefined') XLSX = require('xlsx'); | ||||
| var workbook = XLSX.readFile('test.xlsx'); | ||||
| /* DO SOMETHING WITH workbook HERE */ | ||||
| ``` | ||||
| 
 | ||||
| The node version installs a binary `xlsx` which can read XLSX/XLSM/XLSB | ||||
| files and output the contents in various formats.  The source is available at | ||||
| `xlsx.njs` in the bin directory. | ||||
| - ajax: | ||||
| 
 | ||||
| See <http://oss.sheetjs.com/js-xlsx/> for a browser example. | ||||
| ``` | ||||
| /* set up XMLHttpRequest */ | ||||
| var url = "test_files/formula_stress_test_ajax.xlsx"; | ||||
| var oReq = new XMLHttpRequest(); | ||||
| oReq.open("GET", url, true); | ||||
| oReq.responseType = "arraybuffer"; | ||||
| 
 | ||||
| oReq.onload = function(e) { | ||||
|   var arraybuffer = oReq.response; | ||||
| 
 | ||||
|   /* convert data to binary string */ | ||||
|   var data = new Uint8Array(arraybuffer); | ||||
|   var arr = new Array(); | ||||
|   for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]); | ||||
|   var bstr = arr.join(""); | ||||
| 
 | ||||
|   /* Call XLSX */ | ||||
|   var workbook = XLSX.read(bstr, {type:"binary"}); | ||||
| 
 | ||||
|   /* DO SOMETHING WITH workbook HERE */ | ||||
| } | ||||
| 
 | ||||
| oReq.send(); | ||||
| ``` | ||||
| 
 | ||||
| - html5 drag-and-drop using readAsBinaryString: | ||||
| 
 | ||||
| ``` | ||||
| /* set up drag-and-drop event */ | ||||
| function handleDrop(e) { | ||||
|   e.stopPropagation(); | ||||
|   e.preventDefault(); | ||||
|   var files = e.dataTransfer.files; | ||||
|   var i,f; | ||||
|   for (i = 0, f = files[i]; i != files.length; ++i) { | ||||
|     var reader = new FileReader(); | ||||
|     var name = f.name; | ||||
|     reader.onload = function(e) { | ||||
|       var data = e.target.result; | ||||
| 
 | ||||
|       /* if binary string, read with type 'binary' */ | ||||
|       var wb = XLSX.read(data, {type: 'binary'}); | ||||
| 
 | ||||
|       /* DO SOMETHING WITH workbook HERE */ | ||||
|     }; | ||||
|     reader.readAsBinaryString(f); | ||||
|   } | ||||
| } | ||||
| drop_dom_element.addEventListener('drop', handleDrop, false); | ||||
| ``` | ||||
| 
 | ||||
| This example walks through every cell of every sheet and dumps the values: | ||||
| 
 | ||||
| ``` | ||||
| var sheet_name_list = workbook.SheetNames; | ||||
| sheet_name_list.forEach(function(y) { | ||||
|   var worksheet = workbook.Sheets[y]; | ||||
|   for (z in worksheet) { | ||||
|     if(z[0] === '!') continue; | ||||
|     console.log(y + "!" + z + "=" + JSON.stringify(worksheet[z].v)); | ||||
|   } | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| Complete examples: | ||||
| 
 | ||||
| - <http://oss.sheetjs.com/js-xlsx/> HTML5 File API / Base64 Text / Web Workers | ||||
| 
 | ||||
| Note that older versions of IE does not support HTML5 File API, so the base64 | ||||
| mode is provided for testing.  On OSX you can get the base64 encoding with: | ||||
| 
 | ||||
|     $ <target_file.xlsx base64 | pbcopy # pbcopy puts the content in clipboard | ||||
|     $ <target_file.xlsx base64 | pbcopy | ||||
| 
 | ||||
| - <http://oss.sheetjs.com/js-xlsx/ajax.html> XMLHttpRequest | ||||
| 
 | ||||
| - <https://github.com/SheetJS/js-xlsx/blob/master/bin/xlsx.njs> nodejs | ||||
| 
 | ||||
| The nodejs version installs a binary `xlsx` which can read XLSX/XLSM/XLSB | ||||
| files and output the contents in various formats.  The source is available at | ||||
| `xlsx.njs` in the bin directory. | ||||
| 
 | ||||
| Some helper functions in `XLSX.utils` generate different views of the sheets: | ||||
| 
 | ||||
| - `XLSX.utils.sheet_to_csv` generates CSV | ||||
| - `XLSX.utils.sheet_to_row_object_array` interprets sheets as tables with a | ||||
|   header column and generates an array of objects | ||||
| - `XLSX.utils.sheet_to_json` generates an array of objects | ||||
| - `XLSX.utils.get_formulae` generates a list of formulae | ||||
| 
 | ||||
| For more details: | ||||
| ## Writing Workbooks | ||||
| 
 | ||||
| - `bin/xlsx.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 | ||||
| Assuming `workbook` is a workbook object, just call write: | ||||
| 
 | ||||
| - nodejs write to file: | ||||
| 
 | ||||
| ``` | ||||
| /* output format determined by filename */ | ||||
| XLSX.writeFile(workbook, 'out.xlsx'); | ||||
| ``` | ||||
| 
 | ||||
| - write to binary string (using FileSaver.js) | ||||
| 
 | ||||
| ``` | ||||
| /* bookType can be 'xlsx' or 'xlsm' or 'xlsb' */ | ||||
| var wopts = { bookType:'xlsx', bookSST:true, type:'binary' }; | ||||
| 
 | ||||
| var wbout = XLSX.write(workbook,wopts); | ||||
| 
 | ||||
| function s2ab(s) { | ||||
|   var buf = new ArrayBuffer(s.length); | ||||
|   var view = new Uint8Array(buf); | ||||
|   for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; | ||||
|   return buf; | ||||
| } | ||||
| 
 | ||||
| saveAs(new Blob([s2ab(wbout)],{type:""}), "test.xlsx") | ||||
| ``` | ||||
| 
 | ||||
| Complete examples: | ||||
| 
 | ||||
| - <http://sheetjs.com/demos/writexlsx.html> generates a simple file | ||||
| - <http://git.io/WEK88Q> writing an array of arrays in nodejs | ||||
| 
 | ||||
| ## Interface | ||||
| 
 | ||||
| `XLSX` is the exposed variable in the browser and the exported variable in node | ||||
| `XLSX` is the exposed variable in the browser and the exported nodejs variable | ||||
| 
 | ||||
| 
 | ||||
| `XLSX.read(data, read_opts)` attempts to parse `data`. | ||||
| @ -161,18 +255,18 @@ The exported `write` and `writeFile` functions accept an options argument: | ||||
|   with iOS Numbers | ||||
| - `bookType = 'xlsb'` is stubbed and far from complete | ||||
| - The raw data is the only thing guaranteed to be saved.  Formulae, formatting, | ||||
|   and other niceties are not serialized (pending CSF standardization) | ||||
|   and other niceties may not be serialized (pending CSF standardization) | ||||
| 
 | ||||
| ## Tested Environments | ||||
| 
 | ||||
|  - Node 0.8, 0.10 (latest release) | ||||
|  - NodeJS 0.8, 0.10 (latest release) | ||||
|  - IE 6/7/8/9/10 using Base64 mode (IE10/11 using HTML5 mode) | ||||
|  - FF 18 using Base64 or HTML5 mode | ||||
|  - Chrome 24 using Base64 or HTML5 mode | ||||
| 
 | ||||
| Tests utilize the mocha testing framework.  Travis-CI and Sauce Labs links: | ||||
| 
 | ||||
|  - <https://travis-ci.org/SheetJS/js-xlsx> for XLSX module in node | ||||
|  - <https://travis-ci.org/SheetJS/js-xlsx> for XLSX module in nodejs | ||||
|  - <https://travis-ci.org/SheetJS/SheetJS.github.io> for XLS* modules | ||||
|  - <https://saucelabs.com/u/sheetjs> for XLS* modules using Sauce Labs | ||||
| 
 | ||||
| @ -184,7 +278,7 @@ Running `make init` will refresh the `test_files` submodule and get the files. | ||||
| 
 | ||||
| ## Testing | ||||
| 
 | ||||
| `make test` will run the node-based tests.  To run the in-browser tests, clone | ||||
| `make test` will run the nodejs-based tests.  To run the in-browser tests, clone | ||||
| [the oss.sheetjs.com repo](https://github.com/SheetJS/SheetJS.github.io) and | ||||
| replace the xlsx.js file (then fire up the browser and go to `stress.html`): | ||||
| 
 | ||||
| @ -204,7 +298,7 @@ important to ensure code is cleanroom.  Consult CONTRIBUTING.md | ||||
| 
 | ||||
| ## XLS Support | ||||
| 
 | ||||
| XLS is available in [js-xls](https://github.com/SheetJS/js-xls). | ||||
| XLS is available in [js-xls](http://git.io/xls). | ||||
| 
 | ||||
| ## License | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user