XLSX解析器用于解析excel [英] XLSX parser for parsing excel

查看:618
本文介绍了XLSX解析器用于解析excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图解析xlsx文件并将其保存为表格(沿着 Excel到JSON的JavaScript代码?这是正常工作的XLS文件)。但是,我无法转换为json并以表格形式显示。请在代码片段下面找到。任何人都可以请指导如何关闭这个。

  function filePicked(oEvent){
// Get The File From输入
var oFile = oEvent.target.files [0];
var sFilename = oFile.name;
//创建文件读取器HTML5
var reader = new FileReader();

//准备好当文件获取选定
时的事件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){
//获取当前行为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],函数(indexC,valueC){
sRow = sRow +< td>+ valueC +< / td>;
});
sRow = sRow + < / tr>;
$(#my_file_output)。append(sRow);
});
});
};

//告诉JS开始读取文件..如果需要可以延迟这个
reader.readAsBinaryString(oFile);

}

解决方案 div>

使用以下代码:
注意:使用 jszip.js xlsx.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'});结果= 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;}});返回结果; // that.b64toBlob(xlsx,binary);}; reader.readAsArrayBuffer(file);  



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


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

}

解决方案

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.

这篇关于XLSX解析器用于解析excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆