0

XMLHttpRequest と sheetjs ( https://github.com/SheetJS/js-xlsx ) を使用して、Excel スプレッドシートから json オブジェクトを作成しています。の外部で作成されたオブジェクトにアクセスするのに苦労していることを除いて、すべてがうまく機能していますoReq.onload。json オブジェクトを作成した後、XMLHttpRequest の下のコードへの入力オブジェクトとして使用したいと思います。

return json最後に試してみましたoReq.onloadが、追加のコードを内部に含めようとしましたfunction (e) {}が、どちらのオプションも機能しませんでした。任意の提案をいただければ幸いです。

    /* set up XMLHttpRequest */
    var url = "graph.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"});

      /* Create the json object */
      var json = to_json(workbook); 

      /*Converts excel format to JSON*/
      function to_json(workbook) {
        var result = {};
        workbook.SheetNames.forEach(function(sheetName) {
            var roa = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
            if(roa.length > 0){
                result[sheetName] = roa;
            }
        });
        return result;
      }
    };
    oReq.send();

    /*I WOULD LIKE TO USE THE CREATED JSON OBJECT HERE*/
4

3 に答える 3

0

@epascarello が示唆するように、最終的には非同期の問題になりました。非常に包括的な説明が投稿にあります:関数内で変数を変更した後、変数が変更されないのはなぜですか? - 非同期コード参照

于 2016-08-10T11:03:26.183 に答える