我在HTML表格中有大约5000行(tr),每行有10列(td)。现在我尝试使用以下jQuery代码将整个HTML表导出为excel:
var test = $('#data');
window.open('data:application/vnd.ms-excel,' + encodeURIComponent(test.html()));
还尝试了许多其他jQuery插件,如DataTables.net,jqWidgets和jqGrid,但每次我的浏览器崩溃并不得不重新加载页面。
答案 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")
答案 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"
});
});