Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 2175

Re: how to upload excel file and convert it into JSON format

$
0
0

HI Rajeesh

here is my code

 

view part-

<l:VerticalLayout>

  <u:FileUploader id="fileUploader" name="myFileUpload"

  class="sapUiSmallMarginEnd" uploadUrl="upload/" width="400px"

tooltip="Upload your file to the local server" uploadComplete="handleUploadComplete"

  change="handleExcelUpload" placeholder="Please Select File" />

 

Controller part-

 

onInit: function() {

 

 

         

         

          var oModel = new sap.ui.model.json.JSONModel();

 

 

          this.getView().setModel(oModel);

        sap.ui.getCore().setModel(oModel);

          

          

   },

   handleExcelUpload : function(e) {

    this._import(e.getParameter("files")

                 && e.getParameter("files")[0]);

  },

    _import : function(file) {

  

      if (file && window.FileReader) {

        var reader = new FileReader();

        that = this;

        //result = {};

        //var data;

        reader.onload = function(evt) {

          var data = evt.target.result;

          //var xlsx = XLSX.read(data, {type: 'binary'});

          var arr = String.fromCharCode.apply(null, new Uint8Array(data));

          var xlsx = XLSX.read(btoa(arr), {type: 'base64'});

          result = xlsx.Strings;

          result = {};

          xlsx.SheetNames.forEach(function(sheetName) {

            var rObjArr = XLSX.utils.sheet_to_row_object_array(xlsx.Sheets[sheetName]);

            if(rObjArr.length > 0){

              result[sheetName] = rObjArr;

            }

          });

          return result;

          that.b64toBlob(xlsx, "binary");

        };

        reader.readAsArrayBuffer(file);

 

 

      };

    },

      b64toBlob : function(b64Data, contentType) {

        contentType = contentType || '';

        var sliceSize = 512;

        b64Data = b64Data.replace(/^[^,]+,/, '');

        b64Data = b64Data.replace(/\s/g, '');

        var byteCharacters = Base64.decode(b64Data);

        var byteArrays = [];

 

 

       for (var offset = 0; offset < byteCharacters.length;offset += sliceSize){     

          var slice = byteCharacters.slice(offset, offset + sliceSize);

 

 

          var byteNumbers = new Array(slice.length);

          for (var i = 0; i < slice.length; i++) {

            byteNumbers[i] = slice.charCodeAt(i);

          }

 

 

          var byteArray = new Uint8Array(byteNumbers);

          byteArrays.push(byteArray);

        }

        var blob = new Blob(byteArrays, {

          type : contentType

        });

      }

 

index.htmt

 

<html>

  <head>

 

  <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>

  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/>

 

 

  <script src="resources/sap-ui-core.js"

  id="sap-ui-bootstrap"

  data-sap-ui-libs="sap.m"

  data-sap-ui-theme="sap_bluecrystal">

  </script>

  <!-- only load the mobile lib "sap.m" and the "sap_bluecrystal" theme -->

 

 

  <script>

  sap.ui.localResources("excel_file2");

  var app = new sap.m.App({initialPage:"idexcel_file1"});

  var page = sap.ui.view({id:"idexcel_file1", viewName:"excel_file2.excel_file", type:sap.ui.core.mvc.ViewType.XML});

  app.addPage(page);

  app.placeAt("content");

  </script>

<script src ="excel_file2/jszip.js"></script>

<script src ="excel_file2/xlsx.js"></script>

  </head>

  <body class="sapUiBody" role="application">

  <div id="content"></div>

  </body>

</html>

 

output screen

jsob.PNG

 

Note- i have added xlxs.js and jszip.js files

Regards,

Ayushi


Viewing all articles
Browse latest Browse all 2175

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>