【发布时间】:2014-11-20 12:19:32
【问题描述】:
我正在使用
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,'
, template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>'
, base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)))
}
, format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
})
};
return function(table, fileName) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {
worksheet: fileName || 'Worksheet',
table: table.innerHTML
}
$("<a id='dlink' style='display:none;'></a>").appendTo("body");
document.getElementById("dlink").href = uri + base64(format(template, ctx))
document.getElementById("dlink").download = fileName;
document.getElementById("dlink").click();
}
})();
用于将数据表导出到 excel,它在 chrome 和 firefox 中都可以正常工作。但是它给了
传递给系统调用的数据区域太小。
所有 IE 版本中的错误。请给我一些解决方法来解决这个问题,或者建议任何适用于所有浏览器的新方法。我从昨天开始就在谷歌上搜索,但一切都是徒劳的...... 任何帮助将不胜感激..谢谢
:编辑我已经尝试过downloadify.js,文件保护程序,但对我没有用。
【问题讨论】:
-
是的,我已经看到了这个问题,但没有得到任何结果。这就是我在这里发帖的原因。
-
与链接状态一样,该错误是由于 IE 存储 URI 方式的限制(即旧版本的数据容量有限)。如果您需要支持旧的 IE 版本,那么您必须以旧方式执行此操作并创建 Excel 服务器端。
-
是的,现在我正在使用 downloadify 进行服务器端下载。任何 IE 版本都不支持上面的代码..我使用的是 IE 11...
标签: javascript jquery jquery-datatables export-to-excel