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())); });