2014-04-28 115 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