用于解析excel的XLSX解析器

时间:2016-05-30 11:38:21

标签: javascript html parsing xlsx

我正在尝试解析xlsx文件并另存为一个表(沿Excel to JSON javascript code?行,这对xls文件工作正常)。但是,我无法转换为json并显示为表格。请在下面找到代码段。任何人都可以指导如何关闭。

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 个答案:

答案 0 :(得分:1)

使用此代码: 注意:使用jszip.jsxlsx.js

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);

使用readAsArrayBuffer方法,该方法将支持所有浏览器。