在javascript中导入xlsx文件时,如何手动强制javascript事件

How can I force javascript event manually while importing the xlsx file in Javascript?

本文关键字:javascript 何手动 事件 导入 xlsx 文件      更新时间:2023-09-26

我正在使用下面的代码片段导入Javascript中的xlsx文件。这段代码运行良好,我可以导入xlsx。作为添加的更改addEventListener,每当我选择(选择)文件时,事件都会触发并导入文件。

 <input type="file" name="xlfile" id="xlf" /> 
 <br />
 <input type="button" id="import" value="Import" />
 //some other javascript code

  var xlf = document.getElementById('xlf');
  function handleFile(e) {
  var files = e.target.files;
  var f = files[0];
   {
     var reader = new FileReader();
     var name = f.name;
     reader.onload = function(e) {
     var data = e.target.result;
     var wb;
     wb = X.read(data, {type: 'binary'});
     process_wb(wb);
    };
    if(rABS) reader.readAsBinaryString(f);
    else reader.readAsArrayBuffer(f);
}
}
if(xlf.addEventListener) xlf.addEventListener('change', handleFile, false);

但每当我点击导入按钮时,我都要导入文件。为此,我将上面的行替换为:

var import= document.getElementById('import');
if(import.addEventListener) import.addEventListener('click', handleFile, false);

在这种情况下,我无法获取handleFile(e)方法中的输入文件。

变量名'import'是一个保留字。请尝试更改变量名称。

您可以从xlf变量访问所选文件。

var xlf = document.getElementById('xlf');
function handleFile(e) {
  var files = xlf.files;
  var f = files[0];
  var reader = new FileReader();
  var name = f.name;
  reader.onload = function(e) {
    var data = e.target.result;
    var wb;
    wb = X.read(data, {type: 'binary'});
    process_wb(wb);
  };
  if(rABS) 
    reader.readAsBinaryString(f);
  else 
    reader.readAsArrayBuffer(f);
}

同时更改"导入"变量的名称。Import是一个保留字,用于加载模块(ES2015中增加了新功能)。

var importButton = document.getElementById('import');
if (importButton.addEventListener) 
  importButton.addEventListener('click', handleFile, false);