如何将Datatables表导出到也适用于IE的Excel

我在用

var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,' , template = '{table}
' , 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 } $("").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,filesaver但是没有为我工作。

我使用jspdf来获得理想的结果。以下几点我得到了: –

 1) This works in all versions of IE. 2) You can give the freeze column and freeze row options also in Excel 

我用过的图书馆

 1)downloadify.js 2)swfobject.js 3)downloadify.swf 

我使用的function

 1)getHtmlForExport(); // gives the html of the table to be exported. 2)tableToExcel();// converts html code to Microsoft Excel specific XML code 3)handleExcelExport();// downloads excel specific XML to excel file. var tableToExcel = function (table, horizontalFreezeRowNo, VerticalFreezeRowNo) { var worksheetString = ''; //worksheet freeze pane options worksheetString += '2'; if (horizontalFreezeRowNo !== undefined) worksheetString += '' + horizontalFreezeRowNo + '' + horizontalFreezeRowNo + ''; if (VerticalFreezeRowNo !== undefined) worksheetString += '' + VerticalFreezeRowNo + '' + VerticalFreezeRowNo + ''; worksheetString += ''; var template = '{table}
' , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }; if (!table.nodeType) table = document.getElementById(table) var ctx = { table: table.innerHTML } $("#exportTable").remove(); return format(template, ctx) } function handleExcelExport(gridConfig) { $("." + gridConfig.objectID + "Export").downloadify({ filename: function () { var elementClicked = this.el; var headerText = $(elementClicked).parents('.portlet').find('.portlet-title h8').text(); var fileName; if (elementClicked == undefined || headerText == undefined) { fileName = "excel" } else { fileName = headerText.toString().trim() } return fileName + ".xls"; }, data: function () { var elementClicked = this.el; getHtmlForExport(elementClicked, gridConfig); return (tableToExcel('exportTable', 1, 1));// table id, horizontal freeze,vertical freeze }, onComplete: function () { }, onCancel: function () { }, onError: function () { }, swf: 'resources/js/downloadify/downloadify.swf', downloadImage: 'resources/css/images/excelDownload.png', width: 65, height: 20, transparent: true, append: false }); }

并且对于getHtmlForExport,您必须编写逻辑以获取要导出的表的html。