2016-05-03 2 views
0

Ich verwende unten Code-Snippet, um die XLSX-Datei in Javascript zu importieren. Dieser Code funktioniert einwandfrei und ich kann die xlsx importieren. Wie hinzugefügt, addEventListener, jedes Mal, wenn ich (wählen) Dateiereignis auswählen, triggert und importiert die Datei.Wie kann ich Javascript-Ereignis manuell erzwingen, während die xlsx-Datei in Javascript importiert wird?

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

Aber ich möchte die Datei importieren, wenn ich auf Import button.For klicken, dass ich die obige Zeile mit

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

In diesem Fall ersetzt, ich bin Die Eingabedatei kann nicht in der Methode "handleFile (e)" abgerufen werden.

+0

_ "Aber ich möchte die Datei importieren, wenn ich auf Import-Schaltfläche klicke." _ Was meinst du mit "Datei importieren"? Versuchen Sie, eine Datei vom Benutzerdateisystem anzufordern, wenn Sie auf 'input type = "button" 'element klicken? – guest271314

+0

@ guest271314 Ja, ich versuche, die Datei bei Klick auf Import-Taste zu bekommen, ich habe die anwser von jakub, danke –

Antwort

0

Der Variablenname 'import' ist ein reserviertes Wort. Versuchen Sie, den Variablennamen zu ändern.

+0

Danke emjaksa –

0

Sie können von der xlf-Variablen auf die ausgewählte Datei zugreifen.

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

Ändern Sie auch den Namen für "Import" Variable. Import ist ein reserviertes Wort, das zum Laden von Modulen verwendet wird (neue Funktion wurde in ES2015 hinzugefügt).

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

Dies ist die Zeile, die ich brauche var files = xlf.files; Vielen Dank Jakub, es funktioniert perfekt. –

Verwandte Themen