无法使用jQuery将html表导出为ex​​cel

时间:2013-07-13 05:01:00

标签: jquery html excel

我在HTML表格中有大约5000行(tr),每行有10列(td)。现在我尝试使用以下jQuery代码将整个HTML表导出为ex​​cel:

var test = $('#data');
window.open('data:application/vnd.ms-excel,' + encodeURIComponent(test.html()));

还尝试了许多其他jQuery插件,如DataTables.net,jqWidgets和jqGrid,但每次我的浏览器崩溃并不得不重新加载页面。

4 个答案:

答案 0 :(得分:1)

window.open()的范围和限制已在本文中详细解释过:Export to CSV using jQuery and html

为了您的关注,我测试了2500行,它工作正常。 (我无法在jsfiddler上上传这么多数据,但我相信它也适用于5000行。)

另外,我怀疑你是否将html表包装到容器DIV中。只需将您的html表放入DIV并使用如下 -

$("[id$=myButtonControlID]").click(function(e) {
    window.open('data:application/vnd.ms-excel,' + encodeURIComponent( $('div[id$=divTableDataHolder]').html()));
    e.preventDefault();   });

http://jsfiddle.net/AnilAwadh/wJyWm/

encodeURIComponent()是一个Javascript函数,如果您的数据有任何特殊字符,则该函数用于对特殊字符进行编码。

答案 1 :(得分:0)

如果您定位非IE浏览器,请尝试以下操作:

var test = $('#data');
window.open('data:application/vnd.ms-excel,' + 
            encodeURIComponent(test[0].outerHTML));

使用Chrome浏览器查看此处:http://jsfiddle.net/56tvb/2/

如果您将 Internet Explorer 定位为浏览器,则必须寻找其他方法,因为当前的无效。在MSDN库中,data Protocol主题说:

  

仅支持以下元素和/或数据URI   属性。

object (images only)
img
input type=image
link
CSS declarations that accept a URL, such as background, backgroundImage, 
and so on.
     

数据URI可以嵌套。

     

出于安全原因,数据URI仅限于下载   资源。 数据URI不能用于导航 ,用于编写脚本或   填充框架或iframe元素。

答案 2 :(得分:0)

我的朋友提出了这种方法 - 尝试创建一个blob并使用navigator.msSaveBlob()或navigator。 msSaveOrOpenBlob()。

    var csvContent=data; 
    var blob = new Blob([csvContent],{
        type: "text/csv;charset=utf-8;",
    });

    navigator.msSaveBlob(blob, "filename.csv") 
//or navigator. msSaveOrOpenBlob(blob, "filename.csv")

msdn.microsoft.com/en-us/library/ie/hh772331(v=vs.85).aspx

答案 3 :(得分:0)

您可以尝试使用此插件 - tableExport.js

<强> HTML:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="src/jquery.table2excel.js"></script>
<body>
<tr class="noExl">
  <th>#</th>
  <th>Column heading</th>
  <th>Column heading</th>
  <th>Column heading</th>
</tr>
</body>

<强> jQuery的:

$("button").click(function(){
  $("#table2excel").table2excel({
    // exclude CSS class
    exclude: ".noExl",
    name: "Excel Document Name"
  });
});

插件下载: http://www.jqueryscript.net/table/Export-Html-Table-To-Excel-Spreadsheet-using-jQuery-table2excel.html