2014-04-28 55 views
1

我正在實現與使用DataTables和excel文件的接口。動機是上傳一個Excel,然後在DataTables中顯示它。 因爲我沒有找到任何解析excel並提供給DataTables的JavaScript庫。唯一的選擇是將數據發送到前端struts/java併發送回json。 是否有可能讓DataTables等待Ajax的json而不發送請求。 。數據表中的Ajax響應

回答

0

我認爲,有可能在HTML5和JavaScript。運行並測試下面的代碼。

<html> 
</head> 
<script> 
    function readBlob() { 

    var files = document.getElementById('files').files; 

    if (!files.length) { 
     alert('Please select a file!'); 
     return; 
    } 

    var file = files[0]; 
    var start = 0; 
    var stop = file.size; 

    var reader = new FileReader(); 

    // If we use onloadend, we need to check the readyState. 
    reader.onloadend = function(evt) { 
     if (evt.target.readyState == FileReader.DONE) { // DONE == 2 
     document.getElementById('byte_content').textContent = evt.target.result; 
     } 
    }; 

    var blob = file.slice(start, stop); 
    reader.readAsBinaryString(blob); 
    } 

</script> 
</head> 

<body> 
<input type="file" id="files" name="file" accept=".csv" /> 
<span class="readBytesButtons"> 
    <button onclick="readBlob()">entire file</button> 
</span> 
<div id="byte_range"></div> 
<div id="byte_content"></div> 
</body> 

</html> 

我們可以通過JavaScript中的FileReader將文本中的excel數據提取出來。 如果你想在數據表中顯示數據,請使用你的邏輯。

0

是的,這是可能的,但在你的情況下不需要Ajax。我會怎麼做?見下:

有一個窗體上傳Excel文件到我的struts實現。然後執行excel文件的處理並以純html/table格式返回內容。然後做一個簡單的數據表初始化頁面加載和你的完成!

UPDATE

對於分頁,數據表支持AJAX這樣的:

var oTable = ""; 
$(document).ready(function() { 
    oTable = $('#htmltableID').dataTable({ 
    "sPaginationType": "full_numbers", 
    "bServerSide": true, 
    "sAjaxSource": "/myAjaxSource.jsp?page="+pageNumber+", 
    "sServerMethod": "POST", 
    "iDisplayLength": 50 
    }); 
} 

然後在你的myAjaxSource.jsp你在AJAX發送URL參數page並返回相應數據(JSON )

+0

在這種情況下,服務器分頁將成爲問題。由於excel可能很大。在AJAX中沒有選項可以等待數據,或者在提交GET請求時觸發javascript函數。例如,可以像gmail將郵件推送到前端。 –

0

是的當然,

我想你想嘗試一些荷蘭國際集團這樣的

  1. 上傳文件到服務器

    • 閱讀支柱作用的Excel文件,將其保存在磁盤上的臨時文件夾,並返回文件名,你的JSP。
  2. 時,於是做了第一步使AJAX調用Struts動作

    • 通過文件名作爲參數FOM的DataTable Ajax調用從磁盤
    • 加載文件閱讀,在POJO,或者VO對象
    • 填充
    • 使用gosn或jakson api創建來自Pojo的Json
    • 終於返回json。

進一步看到data table ajax source