HTML表格,使用jQuery的Excel
我有这个jQuery的function,除了我需要添加一些东西。 我在桌子上有一个filter设置来隐藏列。 当我隐藏列并单击导出时,不pipe使用什么字段。 我将如何导出未隐藏的表格列?
var write_to_excel = (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]--></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, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML } window.location.href = uri + base64(format(template, ctx)) } })()
我想我需要类似的东西。
if($(table).display.style!="none")
提前致谢。
最简单的方法是在将表格传递给格式化函数之前从表格中删除列。 既然你扔掉页面导航到一个数据的URI,保留隐藏的列并不重要。
删除隐藏列的方式取决于如何将列隐藏起来。 如果只是通过将display:none应用于隐藏的TD,则可以通过对代码进行更改来实现。
return function(table, name) { if (!table.nodeType) table = document.getElementById(table); $(table).find(':not(:visible)').remove(); var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }; window.location.href = uri + base64(format(template, ctx)); };
或者,您可以使用简单的jQuery使用window.open()方法将表格中的内容导出为Excel格式。 这也将解决显示:无问题在一个更简单的方式:)
window.open(MIMEtype,replace);
MIMEtype :可选。 您正在写入的文档的types。 默认值是“text / html”。
replace :可选。 如果设置,则新文档的历史logging条目将从打开此文档的文档inheritance历史logging条目。
在jQuery代码下面将表格数据导出到Excel。
$("#btnExport").click(function(e) { window.open('data:application/vnd.ms-excel,' + $('#dvData').html()); e.preventDefault(); });
如果您的表格HTML包含特殊字符,那么在将html发送到excel之前,必须对其进行编码。
$("#btnExport").click(function(e) { window.open('data:application/vnd.ms-excel,' + encodeURIComponent($('#dvData').html())); e.preventDefault(); });
jsFiddle示例 – http://jsfiddle.net/jquerybyexample/xhYcD/
$("#btnExport").click(function(e) { window.open('data:application/vnd.ms-excel,' + encodeURIComponent($('#export').html())); });