2016-08-05 15 views
0

Ich möchte ein Excel-Dokument hochladen, lesen Sie das Dokument und schreiben Sie den Excel-Dokument Inhalt in einer Tabelle Format in Jquery ich hatte dies mit Beispielreferenz von here erreicht. erstens dank dieser referenz, aber hier war ich hochgeladen mein Excel-Dokument aus dem lokalen Speicher des Systems zeigte es Fehler namens "Uncaught Ausnahme: Header Signatur: Erwartete d0cf11e0a1b11ae1 sah 504b030414000600". Wenn ich das Dokument hochladen würde, das ich von here heruntergeladen hatte, wurde das Ergebnis erfolgreich generiert. Ich bekomme nicht, was der Fehler aufgetreten ist, ich leide mit den letzten 2 Tagen mit diesem Fehler Kann mir jemand sagen, wie dieses Problem zu lösenSo beheben Sie nicht erfasste Ausnahme: Header-Signatur

Das ist mein HTML-Code

<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script> 
     <script src=" https://cdnjs.cloudflare.com/ajax/libs/xls/0.7.4-a/xls.js"></script> 
     <title>Test Excel</title> 
    </head> 
    <body onload="load_excel();"> 
     <input type="file" id="my_file_input"/> 
     <div id='my_file_output'></div> 
     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="js/index.js"></script> 
    </body> 
</html> 

Das ist mein JS-Code:

function load_excel(){ 

    var oFileIn; 
    oFileIn = document.getElementById('my_file_input'); 
    if(oFileIn.addEventListener) { 
     oFileIn.addEventListener('change', filePicked, false); 
    } 

} 
function filePicked(oEvent){ 

    alert('Function trigggered'); 

    // 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 = XLS.CFB.read(data, {type: 'binary'}); 
     var wb = XLS.parse_xlscfb(cfb); 
     // Loop Over Each Sheet 
     wb.SheetNames.forEach(function(sheetName) { 
      // Obtain The Current Row As CSV 
      var sCSV = XLS.utils.make_csv(wb.Sheets[sheetName]); 
      var data = XLS.utils.sheet_to_json(wb.Sheets[sheetName], {header:1}); 
      $.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); 
} 
+0

Hatten Sie einen Unterschied in beiden Excel-Dateien gefunden? –

+0

Danke Mann für Ihren Vorschlag. Er holt Daten nur von der Excel-Datei ab, die im Format 'XLS' nicht in 'XLSX' gespeichert wird, indem er das Dateiformat zu 'XLS' ändert, Daten tadellos zurück holt. Danke @HassanALi – lakshmansundeep

+0

I Ich freue mich für dich. –

Antwort

1

Sie es codieren könnte, so dass es sowohl xlsx und xls akzeptiert. Basierend auf Ihre Frage und die Dokumentation für SheetJS/js-xlsx würde ich so etwas wie dies vorschlagen:

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'}); 
    console.log(cfb) 
    cfb.SheetNames.forEach(function(sheetName) { 
     // Obtain The Current Row As CSV 
     var sCSV = XLS.utils.make_csv(cfb.Sheets[sheetName]); 
     var oJS = XLS.utils.sheet_to_json(cfb.Sheets[sheetName]); 

     $("#my_file_output").html(sCSV); 
     console.log(oJS) 
     $scope.oJS = oJS 
    }); 
}; 

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

ich es ausprobiert und es funktioniert gut. Lass es mich wissen, wenn ich dir mit irgendetwas helfen kann.

Verwandte Themen