如何将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。