2016-08-05 147 views
0

我想上傳一個excel文檔,閱讀該文檔,並以表格格式在jquery中編寫excel文檔內容,我通過here的示例參考實現了此目的。首先感謝那參考,但在這裏我上傳我的Excel文件從系統本地存儲它顯示錯誤稱爲「未捕獲的異常:標頭簽名:預計d0cf11e0a1b11ae1鋸504b030414000600」。如果我正在上傳我從here下載的文檔正在生成成功的結果。我沒有得到什麼是我最近2天有這個錯誤發生的錯誤 任何人可以告訴我如何解決這個問題如何解決未捕獲的異常:標題簽名

這是我的HTML代碼

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

這是我的JS代碼:

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

你是否發現兩個excel文件有什麼區別? –

+0

謝謝你的建議。它只是從'XLS'格式保存的excel文件中檢索數據,而不是'XLSX',通過將文件格式更改爲'XLS'來完美檢索數據。謝謝你@HassanALi – lakshmansundeep

+0

I爲你感到高興。 –

回答

1

,使其同時接受XLSX和XLS您可以可以編寫它。根據你的問題和SheetJS/js-xlsx的文檔,我建議是這樣的:

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

我嘗試過了,它工作正常。讓我知道我是否可以幫助你。