## Parsing Workbooks For parsing, the first step is to read the file. This involves acquiring the data and feeding it into the library. Here are a few common scenarios:
nodejs read a file (click to show) ```js if(typeof require !== 'undefined') XLSX = require('xlsx'); var workbook = XLSX.readFile('test.xlsx'); /* DO SOMETHING WITH workbook HERE */ ```
Browser read TABLE element from page (click to show) ```js var worksheet = XLSX.utils.table_to_book(document.getElementById('tableau')); /* DO SOMETHING WITH workbook HERE */ ```
Browser download file (ajax) (click to show) Note: for a more complete example that works in older browsers, check the demo at ): ```js /* 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(); ```
Browser drag-and-drop (click to show) Drag-and-drop uses FileReader with readAsBinaryString or readAsArrayBuffer. Note: readAsBinaryString and readAsArrayBuffer may not be available in every browser. Use dynamic feature tests to determine which method to use. ```js /* processing array buffers, only required for readAsArrayBuffer */ function fixdata(data) { var o = "", l = 0, w = 10240; for(; l
Browser file upload form element (click to show) ```js /* fixdata and rABS are defined in the drag and drop example */ function handleFile(e) { var files = e.target.files; var i,f; for (i = 0; i != files.length; ++i) { f = files[i]; var reader = new FileReader(); var name = f.name; reader.onload = function(e) { var data = e.target.result; var workbook; if(rABS) { /* if binary string, read with type 'binary' */ workbook = XLSX.read(data, {type: 'binary'}); } else { /* if array buffer, convert to base64 */ var arr = fixdata(data); workbook = XLSX.read(btoa(arr), {type: 'base64'}); } /* DO SOMETHING WITH workbook HERE */ }; reader.readAsBinaryString(f); } } input_dom_element.addEventListener('change', handleFile, false); ```
### Complete Examples - HTML5 File API / Base64 Text / Web Workers Note that older versions of IE do not support HTML5 File API, so the base64 mode is used for testing.
Get base64 encoding on OSX / Windows (click to show) On OSX you can get the base64 encoding with: ```bash $ certutil -encode target_file target_file.b64 ``` (note: You have to open the file and remove the header and footer lines)
- XMLHttpRequest