XLSX parser for parsing excel

大憨熊 提交于 2019-12-12 03:44:55

问题


I am trying to parse xlsx file and save as a table (Along the lines of Excel to JSON javascript code? which is working fine for xls files). However, I am unable to convert to json and display as a table. Please find below the code snippet. Can anyone please guide how to close on this.

function filePicked(oEvent) {
// Get The File From The Input
var oFile = oEvent.target.files[0];
var sFilename = oFile.name;
// Create A File Reader HTML5
var reader = new FileReader();

// Ready The Event For When A File Gets Selected
reader.onload = function(e) {
    var data = e.target.result;
    var cfb = XLSX.read(data, {type: 'binary'});
    var wb = XLSX.parse_xlscfb(cfb);
    wb.SheetNames.forEach(function(sheetName) {
        // Obtain The Current Row As CSV
        //var sCSV = XLSX.utils.make_csv(wb.Sheets[sheetName]); 
        var data = XLSX.utils.make_json(wb.Sheets[sheetName], {header:1}); 
        alert(data.length);
        //var columns = data[0].split(",");  
        $.each(data, function( indexR, valueR ) {
            var sRow = "<tr>";
            $.each(data[indexR], function( indexC, valueC ) {
                sRow = sRow + "<td>" + valueC + "</td>";
            });
            sRow = sRow + "</tr>";
            $("#my_file_output").append(sRow);
        });
    });
};

// Tell JS To Start Reading The File.. You could delay this if desired
reader.readAsBinaryString(oFile);

}


回答1:


use this code : note: use jszip.js and xlsx.js library

reader.onload = function(evt) {
  debugger;
  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);

use readAsArrayBuffer method which will support on all browser.



来源:https://stackoverflow.com/questions/37524747/xlsx-parser-for-parsing-excel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!