2016-08-10 10 views
0

Я пытаюсь использовать библиотеку XLSX для чтения данных из excelsheet, но я получаю это: -При использовании XLSX для разбора excelsheet - это метание _fs неопределен

ERROR: _fs is undefined at xlsx.js (line 11388, col 59)

Вот мой код: -

<html> 
    <head> 
    <title>Read Excel</title> 
    <meta meta http-equiv="Content-Type" content="text/html;" charset="UTF-8"/> 
    </head> 
    <body> 
    <script src="xlsx.js"></script> 
    <script> 
    function actionbegins(){ 
     console.log("Inside the function action begins !!"); 
     if(typeof XLSX === 'undefined' && typeof require !== 'undefined') 
      XLSX = require('xlsx'); 
     var workbook = XLSX.readFile("Invoice.xlsx", {type: 'base64'}); 
     var first_sheet_name = workbook.SheetNames[0]; 
     var address_of_cell = 'A2'; 
     var worksheet = workbook.Sheets[first_sheet_name]; 
     var desired_cell = worksheet[address_of_cell]; 
     var desired_value = desired_cell.v; 
     console.log("we got the value as --> "+desired_value); 
    } 
    </script> 
    <button id="btnDoIt" onclick="actionbegins()" name="btnDoIt" class="btn btn-primary">do It !!</button> 
    </body> 
</html> 

Я попытался найти в сети подходящий ответ, но не смог найти. Пожалуйста, предложите.

+0

ли вы правильно установить 'xlsx' - пакет? Кажется, что он не может найти требуемые зависимости. –

+0

Я просто загрузил библиотеку из github и использовал ее в своем HTML. Что-нибудь, что мне не хватает? –

+0

Вы установили его с 'bower' или' npm', как это было предложено на github? –

ответ

0

Это не работает, потому что файл не был загружен полностью, и он начал обрабатывать его.

Вот код, который работает абсолютно нормально:

<html> 
    <head> 
    <title>Read Excel</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <script lang="javascript" src="dist/xlsx.core.min.js"></script> 
    </head> 
    <body> 
    <script> 
    function letsdoit(){ 
      var url = "Invoice.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(""); 
      var workbook = XLSX.read(bstr, {type:"binary"}); 

      var first_sheet_name = workbook.SheetNames[0]; 
      var address_of_cell = 'A1'; 
      var worksheet = workbook.Sheets[first_sheet_name]; 
      var desired_cell = worksheet[address_of_cell]; 

      var desired_value = desired_cell.v; 
      alert("value is -- "+desired_value); 
     } 

     oReq.send(); 
    } 
    </script> 
    <input type="file" name="file" id="selectfile" onchange="letsdoit()" /> 
    </body> 
</html>