## 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. 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